RadioGroup
を捨てることで解決!
RadioGroupのつらみ
-
LinearLayout
のサブクラスのため、レイアウト配置が縛られる - 子要素が
RadioButton
でないとダメ
自由なレイアウト、自由なView
(extends Checkable
)について、checked
の排他制御をしたいだけなんじゃ!
つくった
はー、つっかえって思ったのでつくりました。
やれること
- 任意の
View extends Checkable
について、checkedの排他選択ができる - 同じ
ViewGroup
で自由にグルーピングできる -
View
を縛らない - レイアウトを縛らない
どうなってるの?
自分の配置されているレイアウト階層を検索して、排他となるCheckableのグループを作ります。
そのグループ内で、お互いに子View
の状態変化を通知しあって、checked
状態を排他に保ちます。
やらなかったこと
RadioGroup
のような、どいつがchecked
なのかってのは取れないようにしました。
というのも、RadioGroup
のgetCheckedRadioButtonId()
はあっても別に嬉しくないと思っていて、
ID振るなら自分で子View
見るのと大差ないやん、と。
なにより実装めんどくさいし
課題
-
onLayout()
で検索してるけど、ほかにいいライフサイクルないんだろうか- 自分の子の検索については
onFinishInflate()
でもいける気がする?
- 自分の子の検索については
-
childDrawableStateChanged()
でこーいうことしていいの?
参考
今回は特にないです。