前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

RecyclerViewのaddItemDecorationについて

RecyclerViewに対して行間に区切り線(divider)をつけるときにaddItemDecoration()というメソッドを使用する。
このメソッドは2つあり、
addItemDecoration(ItemDecoration decor, int index) と
addItemDecoration(ItemDecoration decor) である。

てっきりindexで行番号を指定してその行だけ任意のdividerをつけられるのかと思ったがそうではなかった。
実際にはdecorationの描画順を表しているらしく、全ての行に対して設定したdecerationが全て適用された
状態で表示される。

とはいえ色の上書きが記述順に関係している様子もないのでこの辺は謎である。

Layoutにstate_pressedを認識させる

課題

ConstraintLayoutにタッチフィードバックをつけたい。selectorのstate_pressedを使おうとしたが
反応しない。どうすればよいか。

対応

selectorのstate_pressedはViewがclickableでないと反応しない。

<android.support.constraint.ConstraintLayout
    android:clickable="true"
    android:focusable="true"
    android:background="?android:attr/selectableItemBackground"
>

android:focusable=trueでないとclickもできないので合わせて設定。ないと警告がでる。
?android:attr/selectableItemBackgroundを使えば自分で作らなくてもエフェクトしてくれる