Frage Wie man einen Knopf ausgraut?


Ich habe eine Schaltfläche definiert wie unten gezeigt. Wenn ich es deaktivieren will, benutze ich my_btn.setEnabled(false), aber ich würde es auch gerne ausradieren. Wie kann ich das machen?

Vielen Dank

<Button android:id="@+id/buy_btn" style="@style/srp_button" />

Stil / srp_button

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_default</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:textSize">14sp</item>
    <item name="android:typeface">serif</item>
    <item name="android:paddingLeft">30dp</item>
    <item name="android:paddingRight">30dp</item>
    <item name="android:paddingTop">5dp</item>
    <item name="android:paddingBottom">5dp</item>
</style>

Zeichen / btn_default.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/pink" />
    <corners android:radius="6dp" />
</shape>

75
2018-01-05 13:15


Ursprung


Antworten:


Sie müssen 3 oder 4 Zustände in Ihrem System angeben btn_defaut.xml als ein Selektor.

  1. Gepresster Zustand
  2. Standardzustand
  3. Fokusstatus
  4. Aktivierter Zustand (Status mit falscher Angabe deaktivieren; siehe Kommentare)

Sie werden für die Zustände entsprechend Wirkung und Hintergrund bereitstellen.

Hier ist eine detaillierte Diskussion: Standard Android Button mit einer anderen Farbe


46
2018-01-05 13:21



Sie könnten es auch als deaktiviert erscheinen lassen, indem Sie das Alpha (halbtransparent) einstellen. Dies ist besonders nützlich, wenn der Hintergrund Ihrer Schaltfläche ein Bild ist und Sie keine Status dafür erstellen möchten.

button.setAlpha(.5f);
button.setClickable(false);

108
2017-11-25 00:48



Die einfachste Lösung besteht darin, den Farbfilter auf das Hintergrundbild einer Schaltfläche zu setzen, wie ich es gesehen habe Hier

Sie können Folgendes tun:

if ('need to set button disable')
    button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
else
    button.getBackground().setColorFilter(null);

Hoffe, ich habe jemandem geholfen ...


40
2017-09-29 18:44



Setzen Sie Clickable auf false und ändern Sie die Hintergrundfarbe wie folgt:

callButton.setClickable(false);
callButton.setBackgroundColor(Color.parseColor("#808080"));

9
2017-08-28 10:00



Alle gegebenen Antworten funktionieren gut, aber ich erinnere mich, dass ich gelernt habe, dass setAlpha ein schlechte Idee leistungsmäßig (mehr Info Hier). Also ein StateListDrawable Es ist eine bessere Idee, den deaktivierten Status von Schaltflächen zu verwalten. Hier ist wie:

Erstellen Sie eine XML-Datei btn_blue.xml im Ordner res / drawable:

<!-- Disable background -->
<item android:state_enabled="false"
      android:color="@color/md_blue_200"/>

<!-- Enabled background -->
<item android:color="@color/md_blue_500"/>

Erstellen Sie einen Schaltflächenstil in res / values ​​/ styles.xml

<style name="BlueButton" parent="ThemeOverlay.AppCompat">
      <item name="colorButtonNormal">@drawable/btn_blue</item>
      <item name="android:textColor">@color/md_white_1000</item>
</style>

Dann wenden Sie diesen Stil auf Ihre Schaltfläche an:

<Button
     android:id="@+id/my_disabled_button"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="@style/BlueButton"/>

Jetzt, wenn du anrufst btnBlue.setEnabled(true) ODER btnBlue.setEnabled(false) Die Statusfarben werden automatisch umgeschaltet.


9
2018-06-27 01:44



Button button = (Button)findViewById(R.id.buy_btn);
button.setEnabled(false);

7
2018-01-05 13:28



Sie sollten eine XML-Datei für die deaktivierte Schaltfläche erstellen (Zeichnungs / btn_disable.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/grey" />
    <corners android:radius="6dp" />
</shape>

Und erstellen Sie einen Selektor für den Button (Zeichnungs / btn_selector.xml)

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/btn_disable" android:state_enabled="false"/>
    <item android:drawable="@drawable/btn_default" android:state_enabled="true"/>
    <item android:drawable="@drawable/btn_default" android:state_pressed="false" />

</selector>

Fügen Sie den Selektor zu Ihrer Schaltfläche hinzu

<style name="srp_button" parent="@android:style/Widget.Button">
    <item name="android:background">@drawable/btn_selector</item>
</style>

5
2017-12-08 09:37



Sie können ein graues Bild erstellen, in Ihr Zeichenbild einfügen und dieses in Ihren Code einfügen.

button.setBackgroundResource(R.drawable.grey);

Einfach, einfach, aber durch die Verwendung von Bild bekommt es ein wenig mehr Platz.


0
2017-12-14 11:21