Quiero desactivar el resaltado naranja que se produce al tocar una fila listView. Hasta ahora en mi xml he intentado lo siguiente:
android:focusable="false" android:focusableInTouchMode="false" android:clickable="false"
Más información: Quiero que haya cero diferencia cuando un usuario toca la pantalla en este objeto listView.
Agregue esto a su xml:
android:listSelector="@android:color/transparent"
Y para el problema esto puede funcionar (no estoy seguro y no sé si hay mejores soluciones):
Puede aplicar una ColorStateList a su TextView.
La respuesta de RoflcoptrException debería ser el truco, pero por alguna razón no funcionó para mí, entonces estoy publicando la solución que funcionó para mí, espero que ayude a alguien
El efecto de resaltado naranja es un estilo en el ListView. Este artículo ofrece una buena visión general de cómo anular el estilo listView.
Básicamente, tiene un selector que especifica diferentes elementos de estilo en función del estado actual.
ver esto para una solución corta y rápida https://stackoverflow.com/a/12242564/185022
De ListView: Desactivar resaltado de enfoque ,
cuando configura su ListAdapter
use el siguiente código
ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c, new String[] { "Name", "Score" }, to) { public boolean areAllItemsEnabled() { return false; } public boolean isEnabled(int position) { return false; } };
Esto anulará la clase BaseAdapter
. También cancela el borde blanco entre las celdas.
agrega esto también a tu XMl junto con el selector de listas … espero que funcione
Si está utilizando ArrayAdapter
o BaseAdapter
para completar los elementos de la lista. Override
el método isEnabled
y devuelva false
.
@Override public boolean isEnabled (int position) { return false; }
Después de algunos ‘googleing’ y pruebas en dispositivos virtuales y reales, noto que mi código siguiente funciona:
ArrayAdapter myList = new ArrayAdapter (this, R.layout.list_item, strText) { public boolean isEnabled(int position) { return false; } };
aviso que he omitido la porción areAllItemsEnabled()
.
Nada me ayuda más que esto:
transparent_drawable.xml
:
layout.xml
:
android:listSelector="@drawable/transparent_drawable"
en codigo
listView.setSelector(getResources().getDrawable(R.drawable.transparent));
y agrega una pequeña imagen transparente a la carpeta dibujable.
Me gusta: transparent.xml
Para mi android:focusableInTouchMode="true"
es el camino a seguir. android:listSelector="@android:color/transparent"
no sirve de nada. Tenga en cuenta que estoy usando una vista de lista personalizada con una cantidad de objetos en cada fila.
Solo necesita agregar: android:cacheColorHint="@android:color/transparent"
Como alternativa:
listView.setSelector(android.R.color.transparent);
o
listView.setSelector(new StateListDrawable());
Hay una forma rápida y sencilla de hacerlo: en método:
private void OnItemSelected(object sender, SelectedItemChangedEventArgs e) { //TODO ((ListView)sender).SelectedItem = null; }
Espero que ayude;)
Si desea deshabilitar el resaltado para un solo elemento de vista de lista, pero mantener la celda habilitada, configure el color de fondo para que esa celda deshabilite el resaltado.
Por ejemplo, en el diseño de su celda, configure android:background="@color/white"
simplemente puede obtener la pos
que obtiene de onItemClick
y hacer:
listView.setItemChecked(pos, false);
esa es la mejor forma que conozco de