Android: setselector color para listview no funciona

Tengo una actividad listview en la que establezco el color del selector con el siguiente código. Pero cuando selecciono un elemento, toda la lista se destaca con el color del selector, que no quiero. ¿Dónde estoy haciendo mal? Cualquier ayuda es apreciada.

ListView lv = getListView(); lv.setFocusableInTouchMode(true); lv.setBackgroundColor(Color.WHITE); lv.setSelector(R.color.blue); 

Utilice esta forma para utilizar Selector
Cree un xml en res/drawable y defina el color para el estado del evento diferente
Entonces este xml como selector
Por ejemplo, res/drawable/selector.xml

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

A continuación, declarar gris en your res\values\colors.xml

 <color name="gray">#808080</color> 

A continuación, ajuste el selector como

 lv.setSelector( R.drawable.selector); 

Gracias por tu ejemplo, funcionó mejor para mí de esta manera … Intenta esto en su lugar. Cree un xml en res/drawable y defina el color para el estado del evento diferente

Entonces este xml como selector
Por ejemplo, res/drawable/selector.xml

 <?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/gray" /> </selector> 

A continuación, declarar gris en su res\values\strings.xml

 <color name="gray">#808080</color> 

A continuación, ajuste el selector como

 lv.setSelector( R.drawable.selector); lv.setDrawSelectorOnTop(true); // if you have background Drawable on your listView 

No es necesario hacer res / drawable / selector.xml.
Simplemente agregue estas líneas en su método onCreate:

 StateListDrawable selector = new StateListDrawable(); selector.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(R.color.pressed_state_color)); selector.addState(new int[]{-android.R.attr.state_pressed}, new ColorDrawable(R.color.normal_state_color)); lv.setSelector(selector); 

Lo siento, no tengo suficiente reputación para agregar comentarios a las respuestas anteriores.

Debes establecer

 android:state_selected = "true" 

a

 android:state_selected = "false" 

Las respuestas aquí no funcionan para las vistas personalizadas en ListView debido a un fondo no válido. La solución es establecer el fondo de cada elemento en android:background="?android:attr/activatedBackgroundIndicator" . He aquí un ejemplo:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="?android:attr/activatedBackgroundIndicator"> <!-- your item content--> </LinearLayout> 

Después de eso, StateListDrawable funciona como se esperaba.

Fuente: http://www.michenux.net/android-listview-highlight-selected-item-387.html ,

  • CheckBox cambia el valor dos veces
  • Android ListView obtiene el valor de TextView en la posición en la que se hace clic en el botón de alternar
  • Quitar sombra de arriba y abajo de ListView en android?
  • ListView cambia el elemento entre marcado y desmarcado - Android
  • ANDROID: Agregar espacio vacío al final de ListView
  • ListFragment Elemento de fondo seleccionado
  • Elemento de lista con CheckBox no se puede hacer clic
  • Android: cómo eliminar una fila de un ListView con un botón de eliminación en la fila
  • ¿Hay alguna manera de mostrar Google Admob en Android Recycler View
  • Listview en Android mientras obtiene datos de un servidor
  • Preseleccionar elementos en listView Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.