ホームページ  >  記事  >  Java  >  Android ListView 項目の背景色の設定と項目クリックが応答しない解決策

Android ListView 項目の背景色の設定と項目クリックが応答しない解決策

高洛峰
高洛峰オリジナル
2017-01-20 15:23:521241ブラウズ

リストビューを使用するときに最も一般的な問題のいくつかを以下に示します。
1. 項目の背景色とクリック色を変更する方法
デフォルトでは、リストビューの項目の背景色は黒で、ユーザーがクリックすると黄色になります。カスタムの背景色に変更する必要がある場合、通常 3 つの方法があります:
1) listSelector を設定する
2) レイアウト ファイルに項目の背景を設定する
3) アダプターの getview に設定する
これら 3 つの方法は次のとおりです。項目のデフォルトの背景色とクリック色の変更については以下で個別に説明しますが、その前にセレクターを記述する必要があります。 drawableはカラーリソースまたは画像リソースとして設定できます。

1) listview

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

のlistSelectorを設定する 2) listitemのレイアウトファイルにbackground属性を設定する 以下はlistitem

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

のレイアウトファイルです 3)adapter

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

のgetViewメソッドに設定する 以上です。リストビューの奇数行と偶数行を変更する必要がある場合、3 番目の方法が最も柔軟です。異なるセレクターに設定した場合は、3 番目の方法のみを使用できます。

2. ボタン、チェックボックス、その他のコントロールをクリックしても反応がありません。

listitem にボタンやチェックボックスなどのコントロールが含まれている場合、listitem はデフォルトでフォーカスを失い、その結果、項目のイベントに応答できなくなります。最も一般的な解決策は、listitem のレイアウト ファイルに子孫Focusability 属性を設定することです。

 if(convertView ==null)
 {
     convertView = LayoutInflater.from(context).inflate(R.layout.listitem, null);
 }
 convertView.setBackgroundResource(R.drawable.selector);

Android ListView の項目の背景色の設定と項目のクリックが応答しない問題の解決策に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。