リストアイテム全体に適用されるセレクターの実現方法
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:orientation="horizontal">
<!-- これはネットワーク経由で読み込む画像 -->
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="8dp"
tools:text="hogehoge"/>
</LinearLayout>
上記のようなレイアウトをRecyclerViewのアイテムのレイアウトとして設定しています。
これにセレクターを適用すると、当然ですがレイアウトの背景のみ変化するため、ImageViewの見た目はそのままになります。
ImageViewも背景と同様のセレクターの効果(全体に半透明の黒がブレンドされるようなイメージ)を適用したいと考えています。
背景はセレクター、画像はColorFilterをそれぞれ使うことでも実現は出来るのですが、
- レイアウトが複雑になると対応が難しい(このレイアウトの中に背景色を持つViewが入った場合や、ImageViewが増えた場合など)
- 定義場所がxml, コードに分散され保守しづらい
等の問題が有ります。
レイアウト全体に適用可能なフィルターのような機能はどのように実現するのがよいのでしょうか?
※ 前提条件として対象OSは4.0-5.0で、Material Designは今回導入しません。