2011-11-16 11 views
18

Tengo algunos Buttons en mi aplicación de Android. Ellos tienen un icono y texto. Puedo establecer el color de fondo de un Button en código java. Si se hace clic en el botón, quiero mostrarlo con un color diferente. Entonces, ¿cómo configuro un color diferente para el estado presionado de Button?¿Cómo configuro un color diferente para el estado presionado del botón?

<Button 
    android:id="@+id/save" 
    android:layout_width="130dip" 
    android:layout_height="wrap_content" 
    android:scaleType="center" 
    android:drawableTop="@drawable/save" 
    android:text="Save" 
    android:textColor="#FFFFFF" 
    android:textSize="14dip" 
> 

El método onCreate:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.homescreen); 
save = (Button)findViewById(R.id.save); 
    save.setBackgroundColor(Color.rgb(27,161,226)); } 
+0

http://stackoverflow.com/questions/4755871/how-to-set-image-button-backgroundimage-for-different-state/4755934#4755934 – ingsaurabh

Respuesta

39

crear el archivo XML usando la imagen del botón como este con mybutton.xml en la carpeta dibujable

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@color/greencolor" /> 
    <item android:state_focused="true" android:drawable="@color/yellowcolor" /> 
    <item android:drawable="@color/redcolor" /> 
</selector> 

y utilizar esto en botón del código XML

android:background="@drawable/mybutton" 

agrega esos códigos de color en el res ource -> valores -> colors.xml como esto

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="blue">#0066cc</color> 
    <color name="gold">#e6b121</color> 
</resources> 

Referencia: Change button background on touch

+0

Gracias por su respuesta, pero no utilicé una imagen para el botón. Quiero establecer el color de fondo del botón cuando se presiona – realuser

+0

podemos cambiar el color del botón con este ... –

+0

Muchas gracias PolamReddyRajaReddy – realuser

2

Utilice un StateList. A continuación se muestra un ejemplo de un selector con un dibujable diferente para el estado presionado:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/drawable_for_pressed_state" android:state_pressed="true"/> 
    <item android:drawable="@drawable/drawable_for_normal_state"/> 

</selector> 
5

A continuación se muestra el código de ejemplo para la lista de estado de color utilizado para un botón

<?xml version="1.0" encoding="UTF-8"?> 

    <selector xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item 
      android:color="#c0c0c0" 
      android:state_selected="true"/> 
     <item 
      android:color="#ffffff" 
      android:state_pressed="true"/> 
     <item 
      android:color="#9A9A9A" 
      android:state_focused="false" 
      android:state_pressed="false" 
      android:state_selected="false"/> 
</selector> 

También por favor comprueban debajo de acoplamiento para el color lista del estado

http://developer.android.com/guide/topics/resources/color-list-resource.html

+2

etiqueta requiere un atributo 'dibujable' o una etiqueta hija que define un dibujante –

+0

@IgorGanapolsky este es un selector de color, no un dibujable - va en res/color – Tom

3

Es necesario utilizar un estirable con el selector de estados prensadas, realiza más comúnmente en los enlaces inferiores XML.

http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

+0

Esto no funciona, el código twrows exexception 'org.xmlpull.v1.XmlPullParserException: la línea del archivo XML binario n. ° 6: etiqueta requiere un atributo 'dibujable' o una etiqueta hija que define un dibujable' – HitOdessit

-3

Si desea cambiar el botón color de fondo a continuación, sólo lo hacen como sigue ..

@Override 
    public void onClick(View v) {  
     if(v.getId() == R.id.btn01) { 
       btn1.setBackgroundColor(Color.RED); 
       btn1.setTextColor(Color.WHITE); 

      } 

solo agregue este código en el evento onclick del botón.

0

edittext_modified_states.xml

<?xml version="1.0" encoding="UTF-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/apptheme_textfield_activated_holo_light" /> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/apptheme_textfield_focused_holo_light" /> 
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/apptheme_textfield_disabled_focused_holo_light"/> 
    <item android:drawable="@drawable/apptheme_textfield_default_holo_light" /> 
</selector> 

aquí: http://android-holo-colors.com Goto este sitio web y seleccionar su color y imort en su estirable. goto layout xml y establecer el fondo del botón. Android: Fondo = "@ dibujable/edittext_modified_states"

Cuestiones relacionadas