Frage

habe ich eine Taste, die den Hintergrund ziehbar auf verschiedenen Zuständen ändert, auf diese Weise:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" android:drawable="@drawable/btn_location_pressed" /> <!-- pressed -->
 <item android:state_focused="true" android:drawable="@drawable/btn_location_pressed"/> <!-- focused -->
 <item android:drawable="@drawable/btn_location"/> <!-- default -->

Das Problem hier ist, dass ich auch bin versucht, die Textfarbe zu ändern, wie ich mit dem ziehbar tun, aber ich bin in der Lage, nicht. Ich habe bereits versucht, android: Textfarbe und Android. Farbe, aber die erste Arbeit nicht, während der Sekunden ändert meinen Hintergrund

Der nächste Code ist ein Teil meines Layouts. In Bezug auf die Textfarbe nur für die normale Zustand Textfarbe arbeitet, damit es nicht zu dem weißen ändern, während gedrückt

<Button android:id="@+id/location_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:background="@drawable/location"          
        android:textSize="15sp"
        android:textColor="@color/location_color"
        android:textColorHighlight="#FFFFFF"
   />

Hat jemand eine Ahnung haben?

War es hilfreich?

Lösung

Erstellen Sie eine Stateful-Farbe für den Button aus, genau wie Sie für den Hintergrund haben, zum Beispiel:

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

    <!-- Focused and not pressed -->
    <item android:state_focused="true" 
          android:state_pressed="false" 
          android:color="#ffffff" />

    <!-- Focused and pressed -->
    <item android:state_focused="true" 
          android:state_pressed="true" 
          android:color="#000000" />

    <!-- Unfocused and pressed -->
    <item android:state_focused="false" 
          android:state_pressed="true" 
          android:color="#000000" />

    <!-- Default color -->
    <item android:color="#ffffff" />

</selector>

Legen Sie die xml in einer Datei in res / ziehbar Ordner d res / ziehbar / button_text_color.xml. Dann einfach die ziehbar als Textfarbe festgelegt:

android:textColor="@drawable/button_text_color"

Andere Tipps

Eine andere Möglichkeit, es zu tun in Ihrer Klasse ist:

import android.graphics.Color; // add to top of class  

Button btn = (Button)findViewById(R.id.btn);

// set button text colour to be blue
btn.setTextColor(Color.parseColor("blue"));

// set button text colour to be red
btn.setTextColor(Color.parseColor("#FF0000"));

// set button text color to be a color from your resources (could be strings.xml)
btn.setTextColor(getResources().getColor(R.color.yourColor));

// set button background colour to be green
btn.setBackgroundColor(Color.GREEN);

ok sehr einfach Anhieb 1. res-valuse und offene Colors.xml 2.Kopie 1 des definierten Text ihre beispiels # FF4081 und ändern Namen zum Beispiel geändert i auf weiß und dessen Wert zum Beispiel ändern i für Weißwert wie dieser

zu #FFFFFF geändert
<color name="White">#FFFFFF</color>

dann in Ihrer Taste fügen Sie diese Zeile

 b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White));

ok b3 ist der Name meiner Taste so der Name der ur-Taste verändert alle anderen gleich sein wird, wenn u weiße Farbe verwenden, wenn Sie andere Farbe ändern dann weiß auf den Namen Ihrer Farbe ändern, aber zuerst müssen Sie diese Farbe definieren in Colors.xml wie ich erklärte in pont 2

Ändern der Textfarbe der Taste

Da diese Methode ist veraltet

button.setTextColor(getResources().getColor(R.color.your_color));

Ich verwende die folgende:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));

Use getColorStateList like this

setTextColor(resources.getColorStateList(R.color.button_states_color))

instead of getColor

setTextColor(resources.getColor(R.color.button_states_color))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top