You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:44:38