2011-05-20 38 views
6

Quiero cambiar el color de la vista bajo el foco; en mi caso, es una fila de la mesa.Cómo cambiar el color de fondo de la vista enfocada

Este es mi código actual, pero no funciona.

  r.setOnTouchListener(new OnTouchListener(){ 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       {    { 
        arg0.setBackgroundColor(Color.LTGRAY); 
        r.setFocusableInTouchMode(true); 
       } 
      return false; 
     }}); 
+0

Lo que en realidad está sucediendo usando este código – ingsaurabh

+0

lo siento ... mira el editado ... después de hacer esto, toda la fila cambia de color una vez que hago clic sobre ella ... y al seleccionar varias filas evry la fila sostiene ese color .. intenté usar isFocussed() en condición si ... no funcionó – ngesh

+0

No estoy seguro, pero según mi opinión, el color de la mesa no cambia con el enfoque. Puedes usar ListView para él –

Respuesta

1

Aquí hago algún ejemplo para usted ... http://life-as-a-coder.com/_shared/background_state.rar

Tome un vistazo a mi main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="50dip" 
     android:background="@drawable/item_background" 
     android:clickable="true"> 
     <TextView 
      android:text="Item 1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="35dip"></TextView> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="50dip" 
     android:background="@drawable/item_background" 
     android:clickable="true"> 
     <TextView 
      android:text="Item 2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="35dip"></TextView> 
    </LinearLayout> 
</LinearLayout> 

utilizo LinearLayout para este ejemplo. Me puse android:clickable="true" para activar el estado de clic ... Esto puede ser usado en ListView también ... sólo lo utilizan en la costumbre fila de artículos ...

Lo siento por mi mala Inglés n gramática

0

@nagesh este enlace va a resolver su problema OnClick change tablerow background color

+0

Necesito cambiar su color cuando está enfocado ... ¿alguna idea ...? – ngesh

+0

@nagesh puede lograr esto usando StateListDrawable en android aquí está el enlace para el mismo http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList – PCS

1

Puede utilizar dibujable XML,
http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

crear un xml como esto

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/button_pressed" /> <!-- pressed --> 
    <item android:state_focused="true" 
      android:drawable="@drawable/button_focused" /> <!-- focused --> 
    <item android:drawable="@drawable/button_normal" /> <!-- default --> 
</selector> 

y que necesita de fondo foto para que

+0

k gracias ... déjame ver si esto funciona ... el archivo xml anterior debe pegar es el directorio res manualmente, supongo ...? – ngesh

+0

sí ... el archivo xml debe colocarse en la carpeta res/dibujable. –

+0

Debe aceptar la respuesta si le funcionó o responder qué salida obtiene. De modo que también podemos ayudarlo de otra manera si esta respuesta no funcionó :) –

Cuestiones relacionadas