我可以为参数值提供两个选项吗?

时间:2020-07-23 14:19:39

标签: android kotlin kotlin-android-extensions

我想做一些事情来控制View的“隐形状态”。

所以我有一个接收View的函数,并且有一个可选参数invisibleType,可以是View.INVISIBLEView.GONE

我想知道如何限制这两个参数的选项。 像fun makeInvisible(view: View, invisibleType: View.INVISIBLE | View.GONE)

可以用Kotlin完成吗? 还是我最好的选择是创建一个自定义枚举或类似的东西来将选项映射到View.INVISBLE和View.GONE?

1 个答案:

答案 0 :(得分:0)

您可以使用枚举或密封类来执行此操作,但可以使用kotlin扩展功能来提高可读性和理解力。

在View Object上添加3个扩展功能。

fun View.visible(): View {
    this.visibility = View.VISIBLE
    if (this is Group) {
        this.requestLayout()
    }
    return this
}

fun View.inVisible(): View {
    this.visibility = View.INVISIBLE
    if (this is Group) {
        this.requestLayout()
    }
    return this
}

fun View.gone(): View {
    this.visibility = View.GONE
    if (this is Group) {
        this.requestLayout()
    }
    return this
}

那么您可以像这样使用

 mView.layout_photoid_success.gone()
 mView.layoutPhotoReview.visible()