こんなセレクター list_item_color.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/press" /> <item android:state_checked="true" android:drawable="@color/check" /> <item android:state_selected="true" android:drawable="@color/white" /> <item android:state_focused="true" android:drawable="@color/red" /> <item android:drawable="@color/black" /> </selector>リストアイテムとして foo_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<com.example.Util.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_item_color"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/pnt_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:paddingRight="5dp"
android:text="@string/foo_name" />
<TextView
android:id="@+id/id_value"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/detail_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:focusable="false"
android:src="@drawable/ic_action_right_dark" />
</com.example.Util.CheckableLinearLayout>
としていました。ところが、リスト項目の背景に list_item_color.xml の item android:drawable の色 @color/black が使用され、
フォント色は何も指定していないけど、CheckableLinearLayout で制御されているためか、@color/black が使用されてしまいました。
これでは、黒背景に黒文字のため、画面が真っ黒で何も見えません。
リストを選択をすると、背景が違う色になるため、かろうじて黒文字が見える状態です。
list_item_color.xml は、テーマの影響を受けません。
よって、背景色は item android:drawable 固定です。よって正解は、
<?xml version="1.0" encoding="utf-8"?>
<com.example.Util.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_item_color"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/pnt_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:paddingRight="5dp"
android:buttonTint="@color/white"
android:textColor="@color/white"
android:text="@string/foo_name" />
<TextView
android:id="@+id/id_value"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:textColor="@color/white"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/detail_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="5dp"
android:focusable="false"
android:src="@drawable/ic_action_right" />
<!--
_theme を指定すべきではない。
android:src="@drawable/ic_action_right_dark" />
-->
</com.example.Util.CheckableLinearLayout>
と、チェックボックスの色と、テキスト色を固定で指定する事でした。また、@drawable/ic_action_right_dark は darkmode の色なので、_dark を除いた @drawable/ic_action_right にすべきでした。
ただし、ここでは背景色が黒固定なので @color/white を指定すべきかもしれません。
0 件のコメント:
コメントを投稿