こんなセレクター 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 件のコメント:
コメントを投稿