Android: Schaltfläche Text und Hintergrundfarbe ändern

Wie kann ich sowohl Text- als auch Hintergrundfarben ändern, wenn meine Taste gedrückt wird, mit xml?

Um Textfarbe zu ändern kann ich:

  • Suchvorschläge aus der Netzwerkressource in das Schnellsuchfeld
  • Was bedeutet @hide im Android-Quellcode?
  • Erfassen der Scroll-Richtung im Adapter (oben / unten)
  • State_activated auf vor Waben-Geräte
  • RecyclerView: Inkonsistenz erkannt Ungültige Positionsposition
  • Versuche zu UNINSTALL_SHORTCUT aber Verknüpfung wird nicht weggehen
  • <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="mycolor"/> <item android:color="mycolor2/> </selector> 

    Um den Hintergrund zu ändern, kann ich (in einem Selektor / Item mit Zeichnungsreferenz verwenden):

     <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF0079FF" /> </shape> 

    Aber wie kann ich beides machen? Angenommen, ich möchte:

    • Standard: schwarzer Text / weißer Hintergrund
    • Gedrückt: weißer text / blauer hintergrund

    EDIT: Antwort

    Ich habe vergessen, dass der Hintergrund und die Textfarbe separat verwaltet werden, also so habe ich es gemacht:

     <Button android:textColor="@color/filtersbuttoncolors" android:background="@drawable/mybackgroundcolors" /> 

    In mybackgroundcolors.xml Ich verwalte den Hintergrund und in filtersbuttoncolors.xml Ich verwalte die Textfarbe. In beiden XML-Dateien verwalte ich den Status (gedrückt, ausgewählt, Standard)

  • So aktualisieren Sie die erweiterbare Listenansicht, wenn sich die Daten des Adapters ändern
  • Was ist Android gleichbedeutend mit Apples b2b Programm?
  • Finde SD-Karten-Datenträger-Label auf Android
  • Verwenden Sie Butterknife, um ein Array von Ansichten zu injizieren
  • Welches ist die beste Werbung SDK für Handy?
  • Wie kann man das Berührungsereignis der Kindansicht in der Berührungseinrichtung der Elternansicht verbrauchen?
  • 5 Solutions collect form web for “Android: Schaltfläche Text und Hintergrundfarbe ändern”

    Hier ist ein Beispiel für eine Zeichenkette, die weiß standardmäßig ist, schwarz, wenn gedrückt:

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <solid android:color="#1E669B"/> <stroke android:width="2dp" android:color="#1B5E91"/> <corners android:radius="6dp"/> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/> </shape> </item> <item> <shape> <gradient android:angle="270" android:endColor="#1E669B" android:startColor="#1E669B"/> <stroke android:width="4dp" android:color="#1B5E91"/> <corners android:radius="7dp"/> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp"/> </shape> </item> </selector> 

    Ich denke, dies ist viel einfacher:

     button.setBackgroundColor(Color.BLACK); 

    Und Sie müssen import android.graphics.Color; Nicht: import android.R.color;

    Oder man kann einfach den 4-Byte-Hex-Code schreiben (nicht 3-Byte) 0xFF000000 wo das erste Byte das Alpha setzt.

    Seit API Level 21 können Sie:

     android:backgroundTint="@android:color/white" 

    Du musst das nur in deinem xml hinzufügen

    Füge unter Zeile in styles.xml hinzu

     <style name="AppTheme.Gray" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorButtonNormal">@color/colorGray</item> </style> 

    In button, add android:theme="@style/AppTheme.Gray" , Beispiel:

     <Button android:theme="@style/AppTheme.Gray" android:textColor="@color/colorWhite" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@android:string/cancel"/> 

    Wenn Sie eine App erstellen, wird eine Datei namens styles.xml in Ihrem res / values-Ordner erstellt. Wenn Sie die Stile ändern, können Sie den Hintergrund, die Textfarbe usw. für alle Ihre Layouts ändern. So musst du nicht in jedes individuelle Layout gehen und es manuell ändern.

    Styles.xml:

     <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.AppBaseTheme" parent="@android:style/Theme.Light"> <item name="android:editTextColor">#295055</item> <item name="android:textColorPrimary">#295055</item> <item name="android:textColorSecondary">#295055</item> <item name="android:textColorTertiary">#295055</item> <item name="android:textColorPrimaryInverse">#295055</item> <item name="android:textColorSecondaryInverse">#295055</item> <item name="android:textColorTertiaryInverse">#295055</item> <item name="android:windowBackground">@drawable/custom_background</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style> 

    parent="@android:style/Theme.Light" ist die einheimischen Farben von Google. Hier ist ein Hinweis darauf, was die einheimischen Styles sind: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml

    name="Theme.AppBaseTheme" bedeutet, dass du einen Stil name="Theme.AppBaseTheme" , der alle Stile von parent="@android:style/Theme.Light" . Dieser Teil kannst du ignorieren, wenn du nicht wieder von AppBaseTheme erben willst. = <style name="AppTheme" parent="AppBaseTheme">

    @ Drawable / custom_background ist ein benutzerdefiniertes Bild, das ich in den Ordner des Zeichensatzes stecke. Es ist ein 300×300 png Bild.

    # 295055 ist eine dunkelblaue Farbe.

    Mein Code ändert den Hintergrund und die Textfarbe. Für Button Text, schauen Sie bitte durch Google die heimischen Stlyes (die Link, den ich oben gegeben).

    Dann in Android Manifest, denken Sie daran, den Code enthalten:

     <application android:theme="@style/Theme.AppBaseTheme"> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.