簡単に言えば:
CardView の cardBackgroundColor プロパティの色の状態を定義するにはどうすればよいでしょうか (この場合は ListView レイアウトで)。
(4.4 がインストールされた電話で Android L 開発者プレビューの RC1 を使用し、build.gradle で「com.android.support:cardview-v7:21.0.0-rc1」を使用しています)
より長いです:
CardView レイアウトでは、cardCornerRadius と cardBackgroundColor を介して CardView の角の半径と背景色を設定します。
ただし、背景色は選択状態を反映しません。たとえば、リスト項目が押された場合などです。
ただし、CardView の内側のビューで、背景色と関連する状態を設定すると、CardView で定義した角の上に表示されます。
では、CardView の cardBackgroundColor の状態が尊重されるようにするにはどうすればよいでしょうか?
cardBackgroundColor、color_with_states.xml に使用される色は次のとおりです。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:color="@android:color/holo_green_dark" />
<item android:state_focused="true" android:state_enabled="false" android:color="@android:color/holo_green_dark" />
<item android:state_focused="true" android:state_pressed="true" android:color="@android:color/holo_green_dark" />
<item android:state_focused="false" android:state_pressed="true" android:color="@android:color/holo_green_dark" />
<item android:state_focused="true" android:color="@android:color/holo_green_dark" />
<!-- Only this below is seen in the cardview dispaly -->
<item android:color="@android:color/holo_blue_bright" />
</selector>
そして、CardView を使用するレイアウト:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
cardview:cardCornerRadius="10dp"
cardview:cardBackgroundColor="@color/colour_with_states"
>
<!-- If we set a background color below, it will overwrite our radius defined above -->
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:text="Lorem ipsum"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItem"
android:background="@null"
android:gravity="center_vertical"
android:paddingTop="8dip"
android:paddingBottom="8dip"
android:paddingStart="8dip"
android:paddingEnd="8dip"
/>
</android.support.v7.widget.CardView>