我是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)
您可以在扩展功能中执行此操作:
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)
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)
您可以从以下代码中使用:
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)
如果视图最初是可见的,则可以使用异或运算符来切换可见性。
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)
Android 开发人员添加了一个扩展androidx.core.view.ViewKt#isVisible来在 View.VISIBLE 和 View.GONE 之间切换可见性。所以还是用它吧。