2011-06-08 8 views
5

Actualmente estoy desarrollando una aplicación para Android que tiene múltiples listas de visitas. En la implementación de ListView, inflico una celda para cada elemento de vista de lista. Este es el category_cell.xml¿Cómo establecer diferentes colores de estados presionados para cada elemento listview?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="60dip" 
    android:id="@+id/cell_layout" 
    android:background="@drawable/list_bg"> 
    <RelativeLayout 
     android:id="@+id/category_cell_layout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <ImageView 
      android:id="@+id/category_image" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="10dip" 
      android:layout_height="45dip" 
      android:layout_width="45dip" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/category_name" 
      android:text="Category Name" 
      android:textSize="16dip" 
      android:typeface="sans" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="70dip" 
      android:textColor="@color/white" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/arrow_image" 
      android:background="@drawable/list_arrow" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="10dip" /> 
    </RelativeLayout> 
</RelativeLayout> 

En el fondo de esta célula, se coloca un xml estirable. que tiene list_bg.xml siguiente código:

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@color/transparent" /> 
    <item 
     android:state_pressed="true" 
     android:drawable="@color/blue" /> 
    <item 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@color/blue" /> 
</selector> 

al rellenar la vista de lista con los artículos, que desea establecer un color diferente para los estados prensadas y enfocada del xml de fondo para cada elemento. Cada elemento contiene el valor de un color y quiero establecer ese color en el estado presionado de ese elemento.

StateListDrawable states = new StateListDrawable(); 
states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(R.color.translucent_red)); 
states.addState(new int[] {android.R.attr.state_focused},getResources().getDrawable(R.color.white)); 
states.addState(new int[] { },getResources().getDrawable(R.color.white)); 
row.setBackgroundDrawable(states); 

que habían tratado de implementar esto, pero esto normalmente se acepta estirable como un segundo parámetro de la función add_state pero quiero publicar un color no .... Podría alguien por favor me ayude ???

+1

no puede c ur archivos XML. edite las preguntas y coloque el código d correctamente – Lavanya

+0

@Rosalie: los archivos XML se muestran correctamente con el código. Por favor revisa ahora. –

+0

Gracias chicos. El problema ha sido resuelto. Lo había intentado una y otra vez por mí mismo y finalmente lo logré. –

Respuesta

0

simplemente cambie el list_bg.xml. Esto es sólo ejemplo, puede crear sus propios colores

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true"><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
     <gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#2f481c" /> 

     <stroke android:width="2dp" android:color="#999999" /> 

     <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" /> 

     <corners android:radius="10px"/> 
    </shape></item> 
<item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
     <gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#4c8a39" /> 

     <stroke android:width="1dp" android:color="#FFFFFF" /> 

     <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" /> 

     <corners android:radius="10px"/> 
    </shape></item> 

Cuestiones relacionadas