Kotlin扩展属性与扩展函数存在冲突该如何处理?
简化Android View可见性控制的Kotlin扩展
嘿,如果你在Android开发中经常需要快速切换View的可见性,还想灵活控制隐藏时是用GONE(不占布局空间)还是INVISIBLE(保留布局空间),这两个Kotlin扩展绝对能帮你简化代码,让逻辑更清晰:
1. 精准控制可见性的扩展函数
先看这个给View类添加的setVisible扩展函数,它通过两个参数明确控制可见性状态:
fun View.setVisible(visible: Boolean, goneWhenVisibleFalse: Boolean) { visibility = when { visible -> View.VISIBLE goneWhenVisibleFalse -> View.GONE else -> View.INVISIBLE } }
用法示例:
// 让TextView显示出来 textView.setVisible(true, false) // 隐藏TextView,并且设为GONE(不占布局位置) textView.setVisible(false, true) // 隐藏TextView,但保留它的布局空间(设为INVISIBLE) textView.setVisible(false, false)
2. 更便捷的可见性扩展属性
基于上面的扩展函数,我们可以封装一个visible扩展属性,让你像操作普通布尔值一样控制View的可见性——默认隐藏时会设为GONE,你也可以根据需求修改默认行为:
var View.visible: Boolean get() = visibility == View.VISIBLE set(value) { setVisible(value, true) } // 这里的true代表默认隐藏用GONE,改成false就会用INVISIBLE
用法更简洁:
// 显示View textView.visible = true // 隐藏View(默认是GONE) textView.visible = false
这样一来,你就不用每次都写冗长的View.VISIBLE/GONE/INVISIBLE常量了,代码会简洁很多,可读性也更强。
内容的提问来源于stack exchange,提问作者crgarridos
相关产品推荐
相关产品推荐

