[desarrolladores-android.com] Cambiar Color de Texto en Boton

2,796 views
Skip to first unread message

Meison

unread,
Dec 1, 2011, 1:33:17 PM12/1/11
to desarrollad...@googlegroups.com

Hola,

Tengo un problema y es que deseo cambiar el color del texto de un botón al presionarlo, el botón lo he creado dinamicamente masomenos así:

Button boton = new Button(this);
boton.setId(programa.getId()); 
boton.setText(programa.getName());  // el texto se obtiene de un objeto

y deseo al presionar, poder cambiar el color del texto,( el cambio del background image lo controlo bien ) .. bueno, lo del texto lo intente asi :

He intentado creando el siguiente selector en res/color/color_texto.xml  :

<?xml version="1.0" encoding="utf-8"?>
    <item android:state_pressed="true"
          android:color="#ffffAA00"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff00BBff"/> <!-- focused -->
    <item android:color="#ffADD1C0"/> <!-- default -->
</selector>


boton.setTextColor(R.color.selector_text_color_negro_a_blanco);


Y no me funciono, por favor si alguien pudiera ayudarme, estoy usando android 2.1

Gracias

--
Armando Chirinos Paredes
((+511) 258 - 3564
((+511) 997 - 773937

Javier Hernández

unread,
Dec 1, 2011, 1:48:28 PM12/1/11
to desarrolladores-android
No te funciona algo así?

.setTextColor(Color.rgb(200,0,0));

> *Armando Chirinos Paredes*
> Blog*: *http://ameison.blogspot.com<http://ameison.blogspot.com/2011/08/instalando-el-ambiente-de-desarro...>
> ((+511) 258 - 3564
> ((+511) 997 - 773937

Javier Hernández

unread,
Dec 1, 2011, 1:55:21 PM12/1/11
to desarrolladores-android
o algo así si quieres reutilizar tus colores:

En un xml para los colores:
<!-- /res/xml/colores.xml -->
<color name="verdeAndroid">#a4c739</color>

En java:

.setTextColor(getResources().getColor(R.xml.colores.verdeAndroid));

Javier Hernández

unread,
Dec 1, 2011, 2:01:30 PM12/1/11
to desarrolladores-android
vale ya entendí lo que quieres hacer, es que no leí todo.

En vez de utilizar el xml ya que lo estás haciendo todo con código
java por qué no le añades un listener al botón, y según su estado le
cambias el color del texto y ya?

http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyListener.html

Meison

unread,
Dec 1, 2011, 2:48:51 PM12/1/11
to desarrollad...@googlegroups.com
Hola Javier,

Gracias por responder ... mi problema no es cambiar el color, sino el hacerlo SOLO al pulsar el botón, luego que se muestre igual.
Esto manejando los estados state_pressed="true".

Deseo al presionar, poder cambiar el color del texto,  lo intente así :


<?xml version="1.0" encoding="utf-8"?>
    <item android:state_pressed="true"
          android:color="#ffffAA00"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff00BBff"/> <!-- focused -->
    <item android:color="#ffADD1C0"/> <!-- default -->
</selector>

boton.setTextColor(R.color.selector_text_color_negro_a_blanco);

Para cambiarlo de acuerdo al estado, pero no me funciono .. 

Gracias



Gracias




--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

Javier Hernández

unread,
Dec 1, 2011, 3:26:33 PM12/1/11
to desarrolladores-android
Hola,

eso es lo que decía al final

http://www.google.com/url?sa=D&q=http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyListener.html&usg=AFQjCNFf-JEIU_2m0PICsiw07r-LJljI0Q

y luego aplicas .setTextColor() según si está typed, pressed o release

On 1 dic, 19:48, Meison <mason...@gmail.com> wrote:
> Hola Javier,
>

> Gracias por responder ... mi problema no es cambiar el color, *sino el
> hacerlo SOLO al pulsar el botón, *luego que se muestre igual.


> Esto manejando los estados state_pressed="true".
>

> *Deseo al presionar, poder cambiar el color del texto, * lo intente así :


>
> <?xml version="1.0" encoding="utf-8"?>
> <selector xmlns:android="http://schemas.android.com/apk/res/android">
>     <item android:state_pressed="true"
>           android:color="#ffffAA00"/> <!-- pressed -->
>     <item android:state_focused="true"
>           android:color="#ff00BBff"/> <!-- focused -->
>     <item android:color="#ffADD1C0"/> <!-- default -->
> </selector>
>
> boton.setTextColor(R.color.selector_text_color_negro_a_blanco);
>
> Para cambiarlo de acuerdo al estado, pero no me funciono ..
>
> Gracias
>
> Gracias
>

Meison

unread,
Dec 1, 2011, 3:31:55 PM12/1/11
to desarrollad...@googlegroups.com
Hola Javier, partiendo de tu respuesta he intentado esto :

boton.setKeyListener(new KeyListener() {
@Override
public boolean onKeyUp(View v, Editable arg1, int arg2, KeyEvent arg3) {
Toast toast =Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_LONG);
toast.show();
((Button)v).setTextColor(R.color.blanco);
return false;
}
@Override
public boolean onKeyOther(View v, Editable arg1, KeyEvent arg2) {
Toast toast =Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_LONG);
toast.show();
((Button)v).setTextColor(R.color.blanco);
return false;
}
@Override
public boolean onKeyDown(View v, Editable arg1, int arg2, KeyEvent arg3) {
Toast toast =Toast.makeText(getApplicationContext(), "3", Toast.LENGTH_LONG);
toast.show();
((Button)v).setTextColor(R.color.blanco);
return false;
}
@Override
public int getInputType() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void clearMetaKeyState(View v, Editable arg1, int arg2) {
// TODO Auto-generated method stub
}



Pero no me muestra nada, 
Saludos



El 1 de diciembre de 2011 14:48, Meison <maso...@gmail.com> escribió:
Hola Javier,

Gracias por responder ... mi problema no es cambiar el color, sino el hacerlo SOLO al pulsar el botón, luego que se muestre igual.
Esto manejando los estados state_pressed="true".

Deseo al presionar, poder cambiar el color del texto,  lo intente así :


<?xml version="1.0" encoding="utf-8"?>
    <item android:state_pressed="true"
          android:color="#ffffAA00"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff00BBff"/> <!-- focused -->
    <item android:color="#ffADD1C0"/> <!-- default -->
</selector>

boton.setTextColor(R.color.selector_text_color_negro_a_blanco);

Para cambiarlo de acuerdo al estado, pero no me funciono ..


  Lo he estado intentado como comentan en este post :
 

Espero me puedas seguir ayudando, gracias !!

Javier Hernández

unread,
Dec 1, 2011, 3:33:08 PM12/1/11
to desarrolladores-android
http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

No lo he probado en Android, pero tiene que servir igual.

On 1 dic, 20:26, Javier Hernández <droin...@gmail.com> wrote:
> Hola,
>
> eso es lo que decía al final
>

> http://www.google.com/url?sa=D&q=http://docs.oracle.com/javase/7/docs...

Javier Hernández

unread,
Dec 1, 2011, 3:51:22 PM12/1/11
to desarrolladores-android
En android no lo he probado pero creo que solo te falta añadir un
switch como este

http://stackoverflow.com/questions/5052278/android-keylistener-working-well-on-emulator-but-not-on-device

> El 1 de diciembre de 2011 14:48, Meison <mason...@gmail.com> escribió:
>
>
>
>
>
>
>
>
>
> > Hola Javier,
>

> > Gracias por responder ... mi problema no es cambiar el color, *sino el
> > hacerlo SOLO al pulsar el botón, *luego que se muestre igual.


> > Esto manejando los estados state_pressed="true".
>

> > *Deseo al presionar, poder cambiar el color del texto, * lo intente así :


>
> > <?xml version="1.0" encoding="utf-8"?>
> > <selector xmlns:android="http://schemas.android.com/apk/res/android">
> >     <item android:state_pressed="true"
> >           android:color="#ffffAA00"/> <!-- pressed -->
> >     <item android:state_focused="true"
> >           android:color="#ff00BBff"/> <!-- focused -->
> >     <item android:color="#ffADD1C0"/> <!-- default -->
> > </selector>
>
> > boton.setTextColor(R.color.selector_text_color_negro_a_blanco);
>
> > Para cambiarlo de acuerdo al estado, pero no me funciono ..
>
>   Lo he estado intentado como comentan en este post :
>

> http://stackoverflow.com/questions/4692642/android-customized-button-...


>
>
>
> > Espero me puedas seguir ayudando, gracias !!
>
> --

Meison

unread,
Dec 1, 2011, 4:01:43 PM12/1/11
to desarrollad...@googlegroups.com
Hola Javier, 

Encontré la forma, gracias por la ayuda ..  comparto el código por si mas tarde lo necesita alguien =)

  int [][] states = new int[][] {new int[] { android.R.attr.state_pressed},new int[1]};
int [] colors = new int[]{Color.rgb(255, 255, 255),Color.BLACK,};
ColorStateList cState = new ColorStateList(states, colors );
boton.setTextColor(cState);

De esta manera, inicialmente se mostrara el texto en color negro, y al mantener presionado el botón cambiara de color a blanco.




--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

Reply all
Reply to author
Forward
0 new messages