Wie kann ich die Farben in meinem StateListDrawable ändern?

Ich habe folgende Auswahl für eine Schaltfläche (mit 2 Zuständen, regelmäßig und gedrückt):

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#3498DB" /> <stroke android:width="1dp" android:color="#2980B9" /> <corners android:radius="0dp" /> <padding android:left="12dp" android:top="12dp" android:right="12dp" android:bottom="12dp" /> </shape> </item> <item> <shape> <solid android:color="#2980B9" /> <stroke android:width="1dp" android:color="#2980B9" /> <corners android:radius="0dp" /> <padding android:left="12dp" android:top="12dp" android:right="12dp" android:bottom="12dp" /> </shape> </item> </selector> 

Meine Schaltfläche hat folgendes, die den Hintergrund als obigen Selektor angibt:

  • Speichern / Wiederherstellen Fragmente Staat Android
  • SSL Client-Authentifizierung in Android 4.x
  • Meine App wirft oft android.view.WindowLeaked Ausnahme -
  • Automatisches Anmelden bei Google-Konto auf Android-Webview
  • Android NDK: Link mit einer vorkompilierten statischen Bibliothek
  • Unterschied zwischen "@ id /" und "@ + id /" in Android
  •  <Button android:id="@+id/button_LaunchShiftsGame" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/ShiftsMode" android:background="@drawable/selector_Button" style="@style/Button_Text" /> 

    Ich muss auf die Farben für beide Zustände aus dem Code zugreifen und diese ändern, wenn die Aktivität geladen wird.

    Wie kann ich das machen?

  • Android portrait oder landschaft
  • Ionen-Build-Nummer falsch in config.xml-Datei
  • Slide ListView Item auf Android wie iPhone Mail App
  • Schütze vor gefälschten Rezensionen bei Google Play
  • Wie beschränke ich Sonderzeichen aus einem Android EditText-Feld?
  • Android WebView zeigt eine leere Seite an
  • One Solution collect form web for “Wie kann ich die Farben in meinem StateListDrawable ändern?”

      StateListDrawable gradientDrawable = (StateListDrawable) inflatedView.getBackground(); DrawableContainerState drawableContainerState = (DrawableContainerState) gradientDrawable.getConstantState(); Drawable[] children = drawableContainerState.getChildren(); LayerDrawable selectedItem = (LayerDrawable) children[0]; LayerDrawable unselectedItem = (LayerDrawable) children[1]; GradientDrawable selectedDrawable = (GradientDrawable) selectedItem.getDrawable(0); GradientDrawable unselectedDrawable = (GradientDrawable) unselectedItem.getDrawable(0); selectedDrawable.setStroke(STORKE_SIZE, NOTIFICATION_COLOR); unselectedDrawable.setStroke(STORKE_SIZE, NOTIFICATION_COLOR); 

    Ich habe das benutzt, um den Schlaganfall zu ändern, es kann hilfreich sein.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.