Maison > Java > javaDidacticiel > Paramètres de couleur d'arrière-plan de l'élément Android ListView et solution qui ne répond pas au clic sur l'élément

Paramètres de couleur d'arrière-plan de l'élément Android ListView et solution qui ne répond pas au clic sur l'élément

高洛峰
Libérer: 2017-01-20 15:23:52
original
1331 Les gens l'ont consulté

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>
Copier après la connexion
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>
Copier après la connexion
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>
Copier après la connexion
3. ) Dans le Set

 if(convertView ==null)
 {
     convertView = LayoutInflater.from(context).inflate(R.layout.listitem, null);
 }
 convertView.setBackgroundResource(R.drawable.selector);
Copier après la connexion
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>
Copier après la connexion
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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal