Android: цвет текста кнопки изменения настроек и цвет фона

Как я могу изменить и цвета текста и цвета фона, когда моя кнопка нажимается с xml?

Для изменения цвета текста, я могу сделать:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="mycolor"/>
    <item android:color="mycolor2/>
</selector>

Для изменения фона, я могу сделать (использование его в селекторе/объекте с drawable ссылкой):

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FF0079FF" />
</shape>

Но как я могу сделать обоих? Скажем, я хочу иметь:

  • Значение по умолчанию: черный текст / белый фон
  • Нажатый: белый текст / синий фон

РЕДАКТИРОВАНИЕ: ответ

Я полностью забыл, что цветом фона и цветом текста управляют отдельно, таким образом, это - то, как я сделал это:

<Button
    android:textColor="@color/filtersbuttoncolors"
    android:background="@drawable/mybackgroundcolors" />

В mybackgroundcolors.xml я управляю фоном, и в filtersbuttoncolors.xml я управляю цветом текста. В обоих XML-файлах я управляю состоянием (нажатый, выбранный, значение по умолчанию)

62
задан 16 October 2013 в 16:29

3 ответа

добавьте ниже строки в styles.xml

<style name="AppTheme.Gray" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorButtonNormal">@color/colorGray</item>
    </style>

в кнопке, добавьте android:theme="@style/AppTheme.Gray", пример:

<Button
            android:theme="@style/AppTheme.Gray"
            android:textColor="@color/colorWhite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@android:string/cancel"/>
12
ответ дан 31 October 2019 в 13:59

Просто дополнение ответа @Jonsmoke.

Для уровня API 21 и выше Вас может использовать:

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

в XML для макета кнопок.

Для уровня API ниже 21 используют AppCompatButton с помощью пространство имен приложения вместо [1 110] андроид для backgroundTint.

, Например:

<android.support.v7.widget.AppCompatButton
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My Button"
    app:backgroundTint="@android:color/white" />
9
ответ дан 31 October 2019 в 13:59

Начиная с уровня API 21 можно использовать:

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

только необходимо добавить это в xml

25
ответ дан 31 October 2019 в 13:59

Другие вопросы по тегам:

Похожие вопросы: