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:

  • Android TabHost Tabs stehlen Fokus bei der Verwendung von Hardware Keyboard
  • Android Wie viele Threads kann ich gehen?
  • Was geschah mit dem evacs 'java?
  • Was macht android: isScrollContainer?
  • Aktiviere Android-Bluetooth aus der Dokumentation
  • Android 6.0 Marshmallow BLE Konnektivität Probleme
  • <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)

  • Wie konkurriere oder führe ich zwei oder mehr Videodateien in Android?
  • Kann kein Cygpath in android starten
  • Konvertieren Sie das vorhandene Projekt in das Bibliotheksprojekt in Android Studio
  • Ist es möglich, die Google Maps API durch Reverse Proxy in meiner App zu verbinden?
  • Übergeben Sie die Liste der Objekte von einer Aktivität auf andere Aktivitäten in Android
  • Linux Ubuntu Android SDK Manager nicht starten - Android: Java: nicht gefunden
  • 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.