webentwicklung-frage-antwort-db.com.de

Ändern Sie die Farbe einer deaktivierten Schaltfläche in Android

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>
11
nixgadgets

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>
15

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" />
4
Prabakaran

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"/>
3
Varundroid

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.

0
Leo Droidcoder

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>
0