431 votes

ListView de fond devient noir lors du défilement

J'ai créé une Liste spécifique qui existe sur les éléments suivants pour créer une liste déroulante avec toutes les lignes contenant une Image sur le côté gauche et du texte sur le côté droit:

Pour commencer avec une "racine" de mise en page :

<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"/>

et puis au sein de la liste que je place à la suite de la "ligne" de l'élément :

<?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>

Tant que l'écran est illustré de façon statique (comme dans aucun mouvement), il sera affiché correctement, mais quand je commence à défiler à travers la liste de l'arrière-plan de la ligne-élément (une "icône", comme le montre le code) s'affiche correctement, mais le contexte de la "racine" de mise en page sera devenu complètement noir... lorsque le défilement s'arrête à l'arrière-plan, la plupart du temps, de revenir à sa couleur... Comme je l'ai test j'ai également ajouté un TextView dans cet élément racine avec le même arrière-plan, celui-ci retiendra c'est la couleur lorsque la Liste est déroulée... Une idée de pourquoi cela se passe, et comment résoudre ce problème?

771voto

Praveen Points 29841

Ajouter un attribut sur le tag ListView

 android:cacheColorHint="#00000000" // setting transparent color
 

Pour plus de détails, consultez ce blog

62voto

Mahesh Points 1655

C'est très simple il suffit d'utiliser cette ligne dans votre fichier de mise en page :

android:scrollingCache="false"

comme ceci:

<ListView 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>

27voto

nikki Points 1062

vous pouvez l'utiliser comme ceci:

list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);

10voto

AnDx Points 506

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"/>

8voto

Sampath Kumar Points 577

Nous avons beaucoup d'options pour résoudre ce problème, vous pouvez définir l'arrière-plan transparent grâce à des émissions comme

yourlistview.setCacheColorHint(Color.TRANSPARENT); 

ou via un fichier xml

android:cacheColorHint="@android:color/transparent"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X