Как закрасить фон кнопки, когда он отключен - PullRequest
0 голосов
/ 16 мая 2019

Я хочу покрасить свою кнопку, которая определена во фрагменте.Я создал новый стиль (который я использую в качестве темы в кнопке) и определил «colorAccent» для включенного состояния, «colorButtonNormal» для отключенного, и родителем этого стиля является «Widget.AppCompat.Button».Я хочу, чтобы он был окрашен точно так, как написано в colorButtonNormal, когда кнопка отключена.

    <style name="Material.Button.Primary" parent="@style/Widget.AppCompat.Button">
        <item name="android:colorButtonNormal">@color/color_disabled</item>
        <item name="colorAccent">@color/color_primary</item>
    </style>
        <Button
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_text"
            android:textAppearance="@style/AppTheme.Text"
            android:theme="@style/Material.Button.Primary" />

Когда кнопка включена, она имеет правильный цвет от colorAccent.Когда пользователь нажимает на него, он становится отключенным и должен быть серым (# b2b2b2), но становится немного светлее (# E7E7E7).Кажется, что он берет определенный мной цвет и смешивается с белым.

Я попытался изменить родителя стиля и сделал некоторые изменения в стиле и атрибутах кнопки, как написано в некоторых руководствах из Интернета, но ничего не получалось.Мое текущее решение состоит в том, чтобы установить colorButtonNormal на # 000000.Когда кнопка отключена, она становится # B9B9B9.

1 Ответ

0 голосов
/ 16 мая 2019

Простите, если я ошибаюсь, но насколько я правильно понимаю, вы хотите добиться разных цветов для включенных / отключенных состояний.

UPDATE

Для сохранения эффекта материала вы можете использовать стили с Widget.AppCompat.Button.Colored и создать тему с указанными цветами:

<Button
.
.
.
    style="@style/Widget.AppCompat.Button.Colored"
    android:theme="@style/CustomButton"/>

И создать тему, где colorButtonNormal для отключенного состояния

<style name="CustomButton" parent="Widget.AppCompat.Button.Colored">
        <item name="colorButtonNormal">@color/color_disabled</item>
        <item name="colorAccent">@color/color_enabled</item>
</style>

Старый без материального эффекта

Вы можете попробовать использовать селектор, например:

custom_button.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:drawable="@color/color_disabled" />
    <item android:state_enabled="true" android:drawable="@color/color_enabled/>
</selector>

и затем в вашем XML для кнопки:

<Button
.
.
.
android:background="@drawable/custom_button" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...