Domanda

Ho fatto un pulsante che cambia il drawable sfondo su diversi stati, in questo modo:

 <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 -->

Il problema qui è che sto anche cercando di cambiare il textColor come faccio con il drawable ma io non sono in grado di. Ho già provato Android: textColor e Android:. Colore, ma il primo non funziona, mentre i secondi, si passa il mio background

Il codice successivo è parte del mio layout. Per quanto riguarda il colore del testo funziona solo per il normale colore del testo di stato, quindi non a cambiarlo con quello bianco, mentre premuto

<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"
   />

Qualcuno ha ottenuto un indizio?

È stato utile?

Soluzione

Creare un colore stateful per il pulsante, proprio come hai fatto per lo sfondo, ad esempio:

<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>

Inserisci il codice XML in un file alla res / drawable cartella cioè res / drawable / button_text_color.xml. Poi basta impostare il drawable come colore del testo:

android:textColor="@drawable/button_text_color"

Altri suggerimenti

Un altro modo per farlo è nella tua classe:

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 molto semplice Inizio Vai alla 1. res-valuse e colors.xml aperto 2.Copy 1 del testo definito loro ad esempio # FF4081 e cambio di nome, per esempio ho cambiato al bianco e modificarne il valore per esempio ho cambiato per #FFFFFF per il valore bianco come questo

<color name="White">#FFFFFF</color>

poi dentro il pulsante aggiungi questa riga

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

ok b3 è il nome del mio pulsante in modo cambiato il nome del tasto ur tutti gli altri sarà lo stesso se u utilizzare il colore bianco, se si cambia colore diverso quindi modificare bianca al nome del tuo colore ma prima devi definire quel colore in colors.xml come ho spiegato a Pont 2

Modifica il colore del testo del pulsante

Poiché questo metodo è ormai deprecato

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

Io uso il seguente:

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

Usa getColorStateList come questo

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

al posto di getColor

setTextColor(resources.getColor(R.color.button_states_color))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top