Ce qui suit explique certains des problèmes les plus courants lors de l'utilisation de ListView.
1. Comment changer la couleur d'arrière-plan et la couleur de clic de l'élément
Par défaut, la couleur d'arrière-plan de l'élément listview est noire et elle est jaune lorsque l'utilisateur clique. Si vous devez le changer en une couleur d'arrière-plan personnalisée, il existe généralement trois méthodes :
1) Définir listSelector
2) Définir l'arrière-plan de l'élément dans le fichier de mise en page
3) Définir Ces trois méthodes peuvent modifier la couleur d'arrière-plan par défaut et la couleur du clic de l'élément. Elles seront expliquées séparément ci-dessous, mais avant cela, vous devez écrire le fichier selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/light_blue"></item> <item android:state_pressed="false" android:drawable="@color/sgray"></item> </selector>avant de modifier le fichier. ou La couleur d'arrière-plan par défaut des éléments de la liste peut être utilisée par le sélecteur. drawable peut être défini comme une ressource de couleur ou une ressource d’image.
1) Définissez le listSelector de listview
<ListView android:id="@+id/history_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#565C5D" android:dividerHeight="3dp" android:listSelector="@drawable/selector" android:cacheColorHint="@android:color/transparent"> </ListView>2) Définissez l'attribut d'arrière-plan dans le fichier de mise en page de listitem Ce qui suit est le fichier de mise en page de listitem
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/selector"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="历史记录" android:textColor="#ffffff" android:textSize="20sp" android:layout_centerInParent="true"> </TextView> </RelativeLayout>3. ) Dans le Set
if(convertView ==null) { convertView = LayoutInflater.from(context).inflate(R.layout.listitem, null); } convertView.setBackgroundResource(R.drawable.selector);de l'adaptateur dans la méthode getView, les méthodes ci-dessus peuvent obtenir le même effet, qui consiste à modifier la couleur d'arrière-plan par défaut de l'élément et la couleur d'arrière-plan lorsque vous cliquez dessus. la plus flexible. Si la liste a des lignes paires et impaires, les lignes doivent être définies sur des sélecteurs différents et seule la troisième méthode peut être utilisée.
2. Il n'y a aucune réponse lorsque vous cliquez sur des boutons, des cases à cocher et d'autres contrôles.
Si l'élément de liste inclut des contrôles tels que des boutons ou des cases à cocher, l'élément de liste perdra le focus par défaut, ce qui entraînera l'impossibilité de répondre aux événements de l'élément. La solution la plus courante consiste à définir l'attribut descendantFocusability dans le fichier de mise en page de l'élément de liste.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:descendantFocusability="blocksDescendants"> <CheckBox android:id="@+id/history_item_checkbt" android:layout_height="30dp" android:layout_width="wrap_content" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:checked="false" > </CheckBox> <ImageView android:id="@+id/history_item_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@id/history_item_checkbt" android:background="@drawable/item_icon"> </ImageView> <Button android:id="@+id/history_item_edit_bt" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="编辑" android:textColor="#ffffff" android:textSize="14sp" android:background="@drawable/button_bg"> </Button> <TextView android:id="@+id/history_item_time_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:textColor="#565C5D" android:textSize="14sp" android:text="10-01 10:20" android:layout_marginRight="5dp" android:layout_toLeftOf="@id/history_item_edit_bt"> </TextView> <TextView android:id="@+id/history_item_title_tv" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_centerVertical="true" android:textColor="#565C5D" android:textSize="14sp" android:text="xxxxxxxxXXXXXXXXXXXXXXXX" android:ellipsize="end" android:maxLines="1" android:layout_toRightOf="@id/history_item_image" android:layout_toLeftOf="@id/history_item_time_tv" android:layout_marginLeft="3dp"> </TextView> </RelativeLayout>Pour plus d'articles connexes sur le paramètre de couleur d'arrière-plan des éléments d'Android ListView et la solution au problème de non-réponse des clics sur les éléments, veuillez faire attention au site Web PHP chinois !