Android Viewの表示切り替えをスッキリさせる

はじめに

Android ではご存知の通り、Viewの表示切り替えは ViewのVisibility を切り替えてあげれば変更することができます。

Visibility 状態
View.VISIBLE 表示(デフォルト)
View.INVISIBLE 不可視化(見えなくなるが、サイズは維持される)
View.GONE 非表示(見えなくなる、かつサイズも維持されない)

使いやすく

使いやすくするために以下のような拡張関数を用意してみましょう。

/**
 * VisibleとGoneを切り替える
 *
 * @param isVisible Visibleであるかどうか
 */
fun View.visibleOrGone(isVisible: Boolean) {
    visibility = if (isVisible) View.VISIBLE else View.GONE
}

/**
 * VisibleとInvisibleを切り替える
 *
 * @param isVisible Visibleであるかどうか
 */
fun View.visibleOrInvisible(isVisible: Boolean) {
    visibility = if (isVisible) View.VISIBLE else View.INVISIBLE
}

/**
 * GoneとVisibleを切り替える
 *
 * @param isGone Goneであるかどうか
 */
fun View.goneOrVisible(isGone: Boolean) {
    visibility = if (isGone) View.GONE else View.VISIBLE
}

/**
 * InvisibleとVisibleを切り替える
 *
 * @param isInvisible Invisibleであるかどうか
 */
fun View.invisibleOrVisible(isInvisible: Boolean) {
    visibility = if (isInvisible) View.INVISIBLE else View.VISIBLE
}

/**
 * VISIBLEに切り替える
 */
fun View.toVisible() {
    visibility = View.VISIBLE
}

/**
 * INVISIBLEに切り替える
 */
fun View.toInvisible() {
    visibility = View.INVISIBLE
}

/**
 * GONEに切り替える
 */
fun View.toGone() {
    visibility = View.GONE
}

これらを用意することで以下のように省略できるようになりました!

val view = findByViewId(R.id.view)
if (isViewVisible) {
    view.visibility = View.VISIBLE
} else {
    view.visibility = View.GONE
}

↓

val view = findByViewId(R.id.view)
view.visibleOrGone(isViewVisible)