Botón personalizado de Android; cambiando el color del texto

Resuelto dwbrito asked hace 54 años • 6 respuestas

Hice un botón que cambia el fondo dibujable en diferentes estados, de esta manera:

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

El problema aquí es que también estoy intentando cambiar el color del texto como lo hago con el dibujable, pero no puedo. Ya probé android:textColor y android:color pero el primero no funciona mientras que el segundo cambia mi fondo.

El siguiente código es parte de mi diseño. En cuanto al color del texto, solo funciona para el color del texto en estado normal, por lo que no cambia al blanco mientras se presiona.

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

¿Alguien tiene alguna pista?

dwbrito avatar Jan 01 '70 08:01 dwbrito
Aceptado

Cree un color con estado para su botón, tal como lo hizo para el fondo, por ejemplo:

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

Coloque el xml en un archivo en la carpeta res/drawable, es decir, res/drawable/button_text_color.xml. Luego simplemente configura el dibujable como color de texto:

android:textColor="@drawable/button_text_color"
Konstantin Burov avatar Jan 14 '2011 15:01 Konstantin Burov

Otra forma de hacerlo es en tu clase:

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);
Michael Yaworski avatar Jul 30 '2013 14:07 Michael Yaworski

ok, muy simple, primero vaya a 1. res-valuse y abra colores.xml 2. copie 1 del texto definido, por ejemplo #FF4081 y cambie el nombre, por ejemplo, cambié a blanco y cambie su valor, por ejemplo, cambié a #FFFFFF para valor blanco como este

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

luego dentro de tu botón agrega esta línea

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

ok b3 es el nombre de mi botón, así que cambié el nombre de su botón, todos los demás serán iguales si usa el color blanco, si cambia un color diferente, luego cambie el blanco al nombre de su color, pero primero debe definir ese color en colores. xml como lo expliqué en el punto 2

SeekingKnowleges avatar Jun 28 '2017 05:06 SeekingKnowleges

Cambiar el color del texto del botón

Porque este método ahora está en desuso

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

Yo uso lo siguiente:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));
Gjoko Bozhinov avatar Aug 24 '2016 12:08 Gjoko Bozhinov