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

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

Andoid6.0でVector画像のdrawableStart, drawableEndのSelectorが機能しない

課題

Selectorを使用したdrawableを作成し、それをTextViewのdrawableStartに設定したが、
Android6.0系の端末だけ初期表示時に有効にならない。
リロードすると正しく表示される。

対応


おそらくバグ。とりあえず主な対処方法は2つ

drawableStart、drawableEndを使わず、drawableLeftとdrawableRightのみを設定する。

両方書いてあると駄目なので旧記法だけにする

Selectorの状態を変更する際にpostを使う

レンダリングをワンテンポ遅らせることで正しく描画される

textView.post {
            textView.isSelected = true
}

特定のバージョン向けの対応なので、どっちもどっち。
ただし画面によっては再現しないのでもう少し条件があるかも。
また、AndroidStudioやSupport Libraryのバージョンも関係してるかもしれない。

ちなみにTextView以外やdrawableTop、drawableBottomでは問題は発生しない