Как изменить цвет кнопки?

Я новичок в программировании Android. Как мне изменить цвет кнопки?

<Button
    android:id="@+id/btn"
    android:layout_width="55dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:text="Button Text"
    android:paddingBottom="20dp"/>

Ответы

Ответ 1

Вы можете изменить цвет двумя способами; через XML или через кодирование. Я бы порекомендовал XML, так как для новичков было проще следовать.

XML:

<Button
    android:background="@android:color/white"
    android:textColor="@android:color/black"
/>

Вы также можете использовать шестнадцатеричные значения ex.

android:background="@android:color/white"

Кодирование:

//btn represents your button object

btn.setBackgroundColor(Color.WHITE);
btn.setTextColor(Color.BLACK);

Ответ 2

Для цвета текста добавьте:

android:textColor="<hex color>"


Для цвета фона добавьте:

android:background="<hex color>"


Из API 21 вы можете использовать:

android:backgroundTint="<hex color>"
android:backgroundTintMode="<mode>"

Примечание. Если вы собираетесь работать с android/java, вам действительно нужно научиться Google;)
Как настроить различные кнопки в Android

Ответ 3

Вот мой код, чтобы сделать разные цвета на кнопке, и Linear, Constraint и Scroll Layout

Во-первых, вам нужно сделать custom_button.xml на своем мобильном

  1. Перейти к res
  2. Разверните его, щелкните правой кнопкой мыши на drawable
  3. Новый → Файл ресурса с возможностью рисования
  4. Имя файла: custom_button, Нажмите OK.

Код Custom_Button.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
    <item android:drawable="@color/black"/> <!-- default -->
</selector>

Во-вторых, перейдите к res

  1. Развернуть значения
  2. Дважды щелкните по colors.xml
  3. Скопируйте код ниже

Код Colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="black">#000</color>
    <color name="violet">#9400D3</color>
    <color name="indigo">#4B0082</color>
    <color name="blue">#0000FF</color>
    <color name="green">#00FF00</color>
    <color name="yellow">#FFFF00</color>
    <color name="orange">#FF7F00</color>
    <color name="red">#FF0000</color>
</resources>

Скриншоты ниже

enter image description here XML-кодирование enter image description here Предварительный просмотр дизайна

Ответ 4

Правильный путь...

Следующие методы действительно работают.

если хочешь - используй тему
По умолчанию цвет кнопок - android:colorAccent. Итак, если вы создадите такой стиль...

<style name="Button.White" parent="ThemeOverlay.AppCompat">
    <item name="colorAccent">@android:color/white</item>
</style>

Вы можете использовать это так...

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/Button.White"
    />

в качестве альтернативы - использование оттенка
Вы можете просто добавить android:backgroundTint для API уровня 21 и выше или app:backgroundTint для API уровня 7 и выше.

Для получения дополнительной информации см. Этот блог.

Проблема с принятым ответом...

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

Ответ 5

Через программирование:

btn.setBackgroundColor(getResources().getColor(R.color.colorOffWhite));

и ваш colors.xml должен содержать...

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="colorOffWhite">#80ffffff</color>
</resources>

Ответ 6

Изменение цвета кнопки программно

Вот:

Button b1;
//colorAccent is the resource made in the color.xml file , you can change it.
b1.setBackgroundResource(R.color.colorAccent);