Android Viewでアプリを作っている場合、よくViewのVisibilityをプログラム的に変更したくなる。
その際によく用いられる手法はVisibilityを変更する拡張関数を作ること。
fun View.show() {
visibility = View.VISIBLE
}
fun View.hide() {
visibility = View.INVISIBLE
}
fun View.gone() {
visibility = View.GONE
}
もっといい方法がないか調べているときにcore-ktxにProperty-based Approachというものを見つけて、こちらのほうが活用の幅が広そうだった。
view.isVisible // VISIBLEならtrue
view.isInvisible // INVISIBLEならtrue
view.isGone // GONEならtrue
// visibilityを変更する
view.isVisible = true // VISIBLEにする
view.isVisible = false // GONEにする
プロパティとして定義されていることの利点はvisibilityの取得と変更をゲッターとセッターによって実行できる点である
そのためviewのvisibilityを見て処理を実行する際に有効である
if(view.isGone) {
// GONEだったときの振舞い
}
注意点があるとするとisVisibleがfalseだった場合はINVISIBLEではなくGONEの状態になっているので対応関係をきちんと把握しておく必要がある
参考文献
最初にプロパティベースのアプローチについて見つけたリンク
ソースコード
ドキュメント
core-ktxについて言及している他の記事
Discussion