Подтвердить что ты не робот

Цвет фона кнопки Android

Я пытаюсь установить цвет фона кнопки в своем приложении, и я не могу добиться результата, который я хочу...

Цвет, который я пытаюсь установить, holo_green_light(#ff99cc00). Для этого я использую setColorFilter(0xff99cc00, PorterDuff.Mode.MULTIPLY);

Цвет, который я получаю, это не holo_green_light, а сочетание lightgrey и holo_green_light.

Я пробовал использовать LightingColorFilter без особого успеха.

Есть ли способ сделать это программно, чтобы кнопка выглядела как кнопка, а не плоский прямоугольник с цветом, который мне нужен.

4b9b3361

Ответ 1

Кнопки более сложные, чем просто изменение одного цвета...

Кнопки Android создаются с использованием довольно большого количества 9-патчей и штатных чертежей. Вы должны взглянуть на Android Holo Colors, чтобы сгенерировать их, вы бы захотели выбрать "Color Button", и он будет генерировать необходимые изображения и xml для вас...

Ответ 2

Это мой способ сделать пользовательскую кнопку с другим цветом.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="3dp"
        android:color="#80FFFFFF" />

  <corners android:radius="25dp" />

  <gradient android:angle="270"
            android:centerColor="#90150517"
            android:endColor="#90150517"
            android:startColor="#90150517" />
</shape>

Этот способ устанавливается как фон.

<Button android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_marginBottom="25dp"
        android:layout_centerInParent="true"
        android:background="@drawable/button"/>

Ответ 3

Если вы хотите сохранить общий стиль (закругленные углы и т.д.) И просто изменить цвет фона, тогда я использую свойство backgroundTint

android:backgroundTint="@android:color/holo_green_light"

Ответ 4

Если вы не возражаете против жесткого кодирования, вы можете сделать это ~ > android: background = "# eeeeee" и отказаться от любого гексагонального цвета, который вы хотите.

Похоже на это....

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView1"
    android:text="@string/ClickMe"
    android:background="#fff"/>

Ответ 5

Создайте /res/drawable/button.xml со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<!-- you can use any color you want I used here gray color-->
 <solid android:color="#90EE90"/> 
    <corners
     android:bottomRightRadius="3dp"
     android:bottomLeftRadius="3dp"
  android:topLeftRadius="3dp"
  android:topRightRadius="3dp"/>
</shape>

И затем вы можете использовать следующее:

<Button
    android:id="@+id/button_save_prefs"
    android:text="@string/save"
    android:background="@drawable/button"/>

Ответ 6

Не нужно быть таким хардкорным.
Попробуй это:

YourButtonObject.setBackground(0xff99cc00);

Ответ 7

Почему бы просто не использовать setBackgroundColor(getResources().getColor(R.color.holo_light_green))?

Изменить: если вы хотите иметь нечто похожее на кнопку Android, вам нужно будет создать градиент и установить его как фон. Например, вы можете проверить этот вопрос.

Ответ 8

Чтобы сохранить стиль, используйте:

int color = Color.parseColor("#99cc00");
button.getBackground().mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC));

Ответ 9

В дополнение к ответу Марка Проктора:

Если вы хотите сохранить стиль по умолчанию, но у кнопки есть условная окраска, просто установите свойство backgroundTint следующим образом:

android:backgroundTint="@drawable/styles_mybutton"

Создайте связанный файл /res/drawable/styles_mybutton.xml, затем используйте следующий шаблон и измените цвета в соответствии с вашими вкусами:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Disabled state-->
    <item android:state_enabled="false"
        android:color="@android:color/white">
    </item>
    <!-- Default state-->
    <item
        android:color="#cfc">
    </item>
</selector>