J'ai créé une liste spécifique qui existe à partir des éléments suivants pour créer une liste déroulante avec chaque ligne contenant une image sur le côté gauche et du texte sur le côté droit:
Pour commencer avec une disposition "racine":
<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>
puis dans le ListView, je place l'élément "ligne" suivant:
<?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 affiché statiquement (comme dans aucun mouvement), il s'affichera correctement, mais lorsque je commence à faire défiler la liste, l'arrière-plan de l'élément de ligne (une "icône" comme peut être affiché dans le code) sera affiché correctement mais l'arrière-plan de la disposition "racine" deviendra complètement noir ... lorsque le défilement s'arrête, l'arrière-plan reprendra la plupart du temps sa couleur ... Pendant le test, j'ai également ajouté un TextView
élément dans cet élément racine avec le même arrière-plan, celui-ci conservera sa couleur lorsque la liste défile ... Une idée pourquoi cela se produit, et comment résoudre cela?
android:cacheColorHint="#0000"
fonctionne également si vous avez peur des zéros.android:cacheColorHint="@android:color/transparent"
si vous avez peur des chiffres :)C'est très simple, utilisez simplement cette ligne dans votre fichier de mise en page:
comme ça:
la source
vous pouvez utiliser comme ceci:
la source
la source
Nous avons beaucoup d'options pour ce problème, vous pouvez définir l'arrière-plan comme transparent via une programmation comme
ou via xml
la source
Dans votre xml où utiliser
Listview
setla source
J'utilise des images
listView
et ça devient noir parfois sur samsung s4 même pas de défilement. C'était une erreur stupide que j'ai faite dans l'adaptateur. Je viens de mettre ma vue à zéro pour résoudre ce problèmela source
Il y a beaucoup de réponses à cette question, mais aujourd'hui, j'ai réalisé que cette question manquait toujours d'une information essentielle.
Il existe deux solutions possibles au problème, les deux fonctionnent mais chacune doit être utilisée dans des situations différentes.
Les méthodes
À utiliser
android:cacheColorHint
lorsque vous avezListView
un arrière-plan de couleur unie .À utiliser
android:scrollingCache
lorsque vous avezListView
une image (complexe) en arrière-plan.Remarque
Lorsque votre
ListView
a un arrière-plan de couleur unie, les deux méthodes fonctionneront, donc non seulementcacheColorHint
elles fonctionneront. Mais il n'est pas recommandé d'utiliser lescrolingCache
méthode pour les arrière-plans de couleur unie car elle désactive une méthode d'optimisation utilisée pour une animation et un défilement fluides de ListView.Remarque:
scrolingCache
la valeur false ne signifie pas nécessairement que lesListView
animations de et le défilement deviendront lents.la source
la source
Ce qui suit a fonctionné pour moi:
la source
android:cacheColorHint="#00000000"// setting transparent color
ou
ne définissez pas l' arrière-plan de
listview
.la source