android - studio - El fondo ListView se vuelve negro cuando se desplaza
llenar un listview android (11)
He creado una lista específica que existe de los siguientes elementos para crear una lista desplazable con cada fila que contiene una imagen en el lado izquierdo y un texto en el lado derecho:
Para comenzar con un diseño de "raíz":
<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="#C8C8C8"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"/>
</LinearLayout>
y luego dentro de ListView coloco el siguiente elemento "fila":
<?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="@drawable/bg_row"
>
<ImageView
android:layout_width="wrap_content"
android:paddingLeft="10px"
android:paddingRight="15px"
android:paddingTop="5px"
android:paddingBottom="5px"
android:layout_height="wrap_content"
android:src="@drawable/bg_image"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5px"
android:paddingBottom="5px"
android:textSize="16sp"
android:textColor="#000000"
android:layout_gravity="center"
android:maxHeight="50px"/>
</LinearLayout>
Siempre que la pantalla se muestre estáticamente (como en ningún movimiento) se mostrará correctamente, pero cuando comience a desplazarme por la lista, el fondo del elemento de la fila (un "icono", como se puede ver en el código) se mostrará se muestra correctamente, pero el fondo del diseño "raíz" se volverá completamente negro ... cuando el desplazamiento se detenga, la mayoría de las veces recuperará su color ... Mientras TextView
también agregué un TextView
en esa raíz Elemento con el mismo fondo, este detendrá su color cuando se desplace la Lista ... ¿Alguna idea de por qué sucede esto y cómo resolverlo?
Añadir un atributo en la etiqueta ListView
android:cacheColorHint="#00000000" // setting transparent color
Para más detalles visita este blog.
En tu xml donde usar el conjunto Listview
android:cacheColorHint="@android:color/transparent"
Es muy simple, solo usa esta línea en tu archivo de diseño:
android:scrollingCache="false"
Me gusta esto:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>
Estoy usando imágenes en listView
y a veces se vuelve negra en samsung s4, ni siquiera se desplaza. Fue un error estúpido que hice en el adaptador. Acabo de poner mi vista en nulo para solucionar este problema.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
convertView = null; // convert view should be null
if (convertView == null) {
holder = new Holder();
convertView = inflater1.inflate(R.layout.listview_draftreport_item, null);
}
}
Hay muchas respuestas a esta pregunta, pero hoy me di cuenta de que a esta pregunta todavía le falta una información crítica.
Hay dos soluciones posibles para el problema, ambas funcionan pero cada una debe usarse en diferentes situaciones.
Métodos
Use android:cacheColorHint
cuando su ListView
tenga un fondo de color sólido .
<item name="android:cacheColorHint">@android:color/transparent</item>
Use android:scrollingCache
cuando su ListView
tenga una imagen (compleja) como fondo.
<item name="android:scrollingCache">false</item>
Nota
Cuando su ListView
tenga un fondo de color sólido, ambos métodos funcionarán, por lo que no solo funcionará cacheColorHint
. Pero no se recomienda usar el método scrolingCache
para fondos de color sólido, ya que desactiva un método de optimización utilizado para animar y desplazar el ListView sin problemas.
Nota para la nota: scrolingCache
establecido en falso no significa necesariamente que las animaciones de ListView
y el desplazamiento sean lentos.
Lo siguiente me funcionó:
myListView.setScrollingCacheEnabled(false);
Se puede usar así:
list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);
Tenemos muchas opciones para este problema, puede configurar el fondo como transparente a través de la programación como
yourlistview.setCacheColorHint(Color.TRANSPARENT);
o a través de xml
android:cacheColorHint="@android:color/transparent"
android:cacheColorHint="#00000000"// setting transparent color
o
no establezca el fondo de listview
.
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"
android:cacheColorHint="#00000000"/>
android:cacheColorHint="@android:color/transparent"