【问题标题】:Can I offer two options to a paremeter value?我可以为参数值提供两个选项吗?
【发布时间】:2020-07-23 14:19:39
【问题描述】:

我想做一些控制视图的“不可见状态”之类的事情。

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

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

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

【问题讨论】:

  • 您可以使用密封类或枚举。
  • @meh 感谢您的回复。我知道我可以通过枚举或 selead 类、抽象类、对象来实现这一点......有很多方法可以做到这一点,但我想知道是否有一些方法可以像原始问题中的 fun
  • 没有将参数值限制为一组特定值的语言功能。为什么不做两个函数,makeInvisiblemakeGone
  • @Tenfour04 我认为我想要的遮阳篷。仅供参考,我不能这样做,因为该函数做了一些“神奇的事情”(问题中的函数只是一个例子)。我可以毫无问题地遵循枚举方法,这只是我的好奇心
  • 注释和解释注释的IDE插件是可能的。这就是像@DrawableRes 这样的Android 注释的工作方式。但是,只有当你在为成千上万人使用的图书馆工作时,这样的事情才值得,IMO。

标签: android kotlin kotlin-android-extensions


【解决方案1】:

您可以使用枚举或密封类来执行此操作,但您可以使用 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()

【讨论】:

    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多