Gibt es eine Möglichkeit, die Farbe einer deaktivierten Schaltfläche in Android durch Stile oder eine andere Form zu ändern?
Ich habe derzeit folgendes
drawable/button_default.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/button_default_shape"/>
</selector>
drawable/button_default_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="@color/button_default_background"/>
<corners Android:radius="3dp"/>
</shape>
values / styles.xml
<style name="AppTheme.Button">
<item name="Android:background">@drawable/button_default</item>
<item name="Android:textColor">@Android:color/white</item>
<item name="Android:textAllCaps">false</item>
<item name="Android:paddingTop">10dp</item>
<item name="Android:paddingBottom">10dp</item>
<item name="Android:focusable">true</item>
<item name="Android:clickable">true</item>
<item name="Android:gravity">center</item>
<item name="Android:textStyle">bold</item>
<item name="Android:textSize">17sp</item>
<item name="Android:textAppearance">@style/CustomFontAppearance</item>
</style>
In diesen Zuständen müssen Sie einen Selector für verschiedene Drawables verwenden.
Sie können einen Selektor wie folgt erstellen:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/your_enabled_drawable" Android:state_enabled="true" />
<item Android:drawable="@drawable/your_disabled_drawable" Android:state_enabled="false" />
<!-- default state-->
<item Android:drawable="@drawable/your_enabled_drawable" />
</selector>
Legen Sie die Farbe im Selektor für Android fest: state_enabled = "false" als Zeichenelement
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="false">
<shape>
<solid Android:color="#32ff09" />
</shape>
</item>
</selector>
Wenden Sie diese Ressource auf den Hintergrund der Schaltfläche an
<Button
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@drawable/drawble_name"
Android:enabled="false"
Android:text="Selector Applied Button" />
Versuche dies -
drawable/bg_button.xml: -
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/bg_button_focused" Android:state_selected="true"/>
<item Android:drawable="@drawable/bg_button_pressed" Android:state_pressed="true"/>
<item Android:drawable="@drawable/bg_button_disabled" Android:state_enabled="false" />
<item Android:drawable="@drawable/bg_button_normal"/>
</selector>
Danach einfach den Hintergrund auf den Button setzen -
<Button
Android:id="@+id/button"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/bg_button"
Android:text="Button"/>
Eine andere Möglichkeit, dies zu erreichen, besteht darin, ein Farbauswahl zu erstellen.
Erstellen Sie eine Datei
res/color/your_color.xml
das sieht aus wie
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:color="@color/colorDisabledBackground" Android:state_enabled="false" />
<item Android:color="@color/colorEnabledBackground" />
</selector>
Dann können Sie es als normale Farbe verwenden
in einem Stil:
<style name="YourStyle">
<item name="Android:background">@color/your_color</item>
<item name="Android:textColor">@Android:color/black</item>
</style>
Ebenso in Layouts, Formen oder im Code etc.
Hier ist mein Code, der ordnungsgemäß mit dem Aktivierungs- und Deaktivierungsstatus der Schaltfläche funktioniert.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="true" Android:drawable="@drawable/ic_button_gradient"/>
<item Android:state_enabled="false" Android:drawable="@color/gray"/>
</selector>