Kotlin新手求助:如何根据条件设置View的可见性?
Kotlin中实现View的显示/隐藏切换
嘿,刚接触Kotlin的话,这个需求其实很好实现,而且Kotlin能让代码比你贴的Java版本更简洁~
首先,先给你一个和你Java代码逻辑完全对应的Kotlin版本:
fun showHide(view: View) { if (view.visibility == View.VISIBLE) { view.visibility = View.INVISIBLE } else { view.visibility = View.VISIBLE } }
不过Kotlin有很多语法糖可以让代码更优雅,比如用when表达式替代if-else,逻辑更清晰:
fun showHide(view: View) { view.visibility = when(view.visibility) { View.VISIBLE -> View.INVISIBLE else -> View.VISIBLE } }
更酷的是,你可以给View写一个扩展函数,这样所有View的实例都能直接调用这个切换方法,复用性拉满:
fun View.toggleVisibility() { visibility = if (visibility == View.VISIBLE) View.INVISIBLE else View.VISIBLE } // 使用的时候直接这样写: // yourTargetView.toggleVisibility()
如果你的需求是切换VISIBLE和GONE(这俩的区别是INVISIBLE会保留View的占位空间,GONE会完全移除占位),只需要把上面的View.INVISIBLE换成View.GONE就行。
另外,Kotlin还支持直接用布尔值来设置可见性,写法更直观:
// 直接设置可见: yourTargetView.isVisible = true // 设置不可见(对应INVISIBLE): yourTargetView.isInvisible = true // 设置隐藏(对应GONE): yourTargetView.isGone = true
用这个特性来写切换逻辑的话,代码会更简洁:
fun showHide(view: View) { view.isVisible = !view.isVisible }
内容的提问来源于stack exchange,提问作者user9238054
相关产品推荐
相关产品推荐

