Cómo obtener pantalla en negro mientras se desplaza en ListView en Android
Tengo un listview en el que estoy mostrando datos que tengo, funciona bien en el emulador y desplazarse también. Pero cuando lo pruebo en el dispositivo en el momento del desplazamiento que está mostrando la pantalla en negro y después de que las paradas de desplazamiento está en la forma legible normal. No sé por qué está sucediendo esto. También adjunto código de ejemplo.
1ª Disposición XML: –
- Mostrar número de contacto y nombre de contacto en una vista de lista personalizada
- ¿Cómo abrir el Contexto del Menú Android con el botón de clic en el adaptador de listview?
- Reaccionar listview nativo no se desplaza
- Aceleración de hardware en ListView
- Java.lang.OutOfMemoryError: tamaño de mapa de bits supera el presupuesto de VM en ListView y imágenes de carga perezosa
<?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="fill_parent" android:orientation="vertical" android:padding="7dp" > <TextView android:id="@+id/item_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2dp" android:textColor="#000000" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="20dp" /> <TextView android:id="@+id/item_subtitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000" android:padding="2dp" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="13dp" />
2nd ListView Layout: -También tiene vista de desplazamiento.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawSelectorOnTop="false" /> <TextView android:id="@android:id/empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="No data" android:textColor="#000000" />
Código donde he utilizado este diseño: –
ListAdapter adapter = new SimpleAdapter(this, HomeMenuActivity.mylist , R.layout.listdata, new String[] { "Name", "Vicinity" }, new int[] { R.id.item_title, R.id.item_subtitle }); setListAdapter(adapter); lv = getListView(); lv.setTextFilterEnabled(true);
Tengo arraylist estático "mylist" que tiene los datos. Por favor, si alguien tiene alguna idea de por qué muestra pantalla en negro en el momento de desplazamiento por favor guíame.
Gracias lv.setOnItemClickListener (this);
- Destruir vista (disposición)
- Excepciones mientras utiliza MvxAdapter
- Android: Cómo ocultar un elemento ListView
- CheckBox se desactiva en desplazamiento en una vista de lista personalizada
- ¿Cuál usar WebView o TextView en una lista con datos HTML en ella?
- No puede hacer clic en la fila listview con imagebutton
- ¿Cómo configurar onClickListener para partes separadas de la lista personalizada?
- Android ListView no se actualiza tras cambiar el cursor
Estoy totalmente de acuerdo con todas las respuestas enumeradas anteriormente, pero déjame darte esta información:
ListView tiene un fondo transparente / traslúcido de forma predeterminada y, por lo tanto, todos los widgets predeterminados en el conjunto de herramientas de la interfaz de usuario de Android. Esto implica que cuando ListView vuelve a dibujar a sus hijos, tiene que mezclar a los niños con el fondo de la ventana. Una vez más, esto requiere lecturas costosas de memoria que son particularmente dolorosas durante un desplazamiento o un lanzamiento cuando el dibujo ocurre docena de veces por segundo.
Para mejorar el rendimiento del dibujo durante las operaciones de desplazamiento, el marco de Android reutiliza la sugerencia de color del caché. Cuando se establece esta sugerencia, el marco copia a cada hijo de la lista en un mapa de bits que contiene el valor de la sugerencia (suponiendo que otra optimización, denominada caché de desplazamiento, no esté desactivada). ListView entonces blits estos mapas de bits directamente en la pantalla y porque estos mapas de bits son conocidos por ser opaco, sin mezcla es necesario. Además, como la sugerencia de color de caché predeterminada es # 191919, obtendrás un fondo oscuro detrás de cada elemento durante un desplazamiento.
Para solucionar este problema, todo lo que tiene que hacer es desactivar la optimización de la sugerencia de color del caché, si utiliza un fondo de color no sólido o establecer la sugerencia en el valor de color sólido apropiado. Puede hacerlo desde el código (consulte setCacheColorHint(int)
) o preferiblemente desde XML, usando el atributo android: cacheColorHint. Para deshabilitar la optimización, simplemente use el color transparente # 00000000. La siguiente captura de pantalla muestra una lista con android:cacheColorHint="#00000000"
establecido en el archivo de diseño XML
Para más información: Android ListView Optimization
Solución:
Puedes usar android:cacheColorHint="@android:color/transparent"
o android:cacheColorHint="#00000000"
Tienes que configurar esto en tu listview:
android:cacheColorHint="#00000000"
El objetivo es deshabilitar una optimización que realiza el marco para mejorar el rendimiento del dibujo durante las operaciones de desplazamiento.
Simplemente agregue el atributo de sugerencia de color a la vista de lista.
<ListView android:layout_height="wrap_content" android:layout_width="match_parent" android:cacheColorHint="@android:color/transparent" />
Agregue una propiedad en la etiqueta listview en su diseño
android:cacheColorHint="#00000000"
Después de que debería funcionar.
Intente este código y ajuste el color según su requisito:
String arr[]=new String[]{"a","bv"}; ListView lv; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); lv=(ListView)findViewById(R.id.lv1); ArrayAdapterad=newArrayAdapter(getApplicationContext(),R.layout.check_it,R.id.txt_color,ar); lv.setAdapter(ad); }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:layout_width="match_parent" android:layout_height="250dp" android:id="@+id/lv1" android:background="#000" android:scrollingCache="false"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:id="@+id/txt_color"/>