如何在Kotlin中设置知名度?

12 android kotlin

我是Kotlin的新人.我认为我需要以有条件的方式展示或隐藏.
我怎么能在Kotlin做到这一点?

在Java中:

 public void showHide(View view){
        if (view.getVisibility() == View.VISIBLE) {
            view.setVisibility(View.INVISIBLE);
        } else {
            view.setVisibility(View.VISIBLE);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Fay*_*med 17

回答这个答案,我相信Kotlin风格的方法可以写成:

fun showHide(view:View) {
    view.visibility = if (view.visibility == View.VISIBLE){
        View.INVISIBLE
    } else{
        View.VISIBLE
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 11

你可以简单地做到这一点。

idTextview.isVisible = true
idTextview.isVisible = false
Run Code Online (Sandbox Code Playgroud)

  • 就是这样,为什么要写更多代码,而你可以做得更少:L)谢谢,想发布这个,但当我看到你的答案时我没有。谢谢 (2认同)

zsm*_*b13 6

您可以在扩展功能中执行此操作:

fun View.toggleVisibility() {
    if (visibility == View.VISIBLE) {
        visibility = View.INVISIBLE
    } else {
        visibility = View.VISIBLE
    }
}
Run Code Online (Sandbox Code Playgroud)

可以像这样使用:

someView.toggleVisibility()
Run Code Online (Sandbox Code Playgroud)


raj*_*ath 6

Kotlin 中的一个简单方法:

fun toggleView(view: View) {
    view.isVisible = !view.isVisible
}
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用 Android Studio 进行转换:单击您要转换的 Java 文件,选择代码 -> 将 Java 文件转换为 Kotlin 文件并查看其神奇之处。结果是:

fun showHide(view: View) {
        if (view.visibility == View.VISIBLE) {
            view.visibility = View.INVISIBLE
        } else {
            view.visibility = View.VISIBLE
        }
    }
Run Code Online (Sandbox Code Playgroud)


jo *_* jo 5

您可以从以下代码中使用:

fun View.isVisible(): Boolean {
    return visibility == View.VISIBLE
}
Run Code Online (Sandbox Code Playgroud)

和:

fun View.setVisible(visible: Boolean) {
    visibility = if (visible) {
        View.VISIBLE
    } else {
        View.GONE
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以使用:

if (text_view.isVisible()) {
    text_view.setVisible(false)
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果要显示图标

 ic_back.visibility = View.VISIBLE
Run Code Online (Sandbox Code Playgroud)

并且如果您想让能见度消失,请尝试:

ic_back.visibility = View.GONE
Run Code Online (Sandbox Code Playgroud)


pet*_*ula 5

如果视图最初是可见的,则可以使用异或运算符来切换可见性。

view.visibility = view.visibility.xor(View.GONE)
Run Code Online (Sandbox Code Playgroud)

然而,正确且更具可读性的方法是使用内联 var View.isVisible

view.isVisible = !isVisible


inline var View.isVisible: Boolean
    get() = visibility == View.VISIBLE
    set(value) {
        visibility = if (value) View.VISIBLE else View.GONE
    }
Run Code Online (Sandbox Code Playgroud)

2022 年 5 月 1 日编辑:

Android 开发人员添加了一个扩展androidx.core.view.ViewKt#isVisible来在 View.VISIBLE 和 View.GONE 之间切换可见性。所以还是用它吧。