Android: 隐藏一个元素

Android: hide an element

想象一个 Android 应用程序有 3 个线性布局的 TextView,一个依次在另一个下方,然后是 2 个按钮。 1个按钮需要隐藏第二个文本视图,第二个按钮需要使其再次可见。

唯一的要求是当第二个文本视图消失时,它不应占据任何 space,这意味着第三个文本视图应占据其 space 当它消失时。

我尝试使用 INVISIBLE 和 VISIBLE 设置进行此操作,但是,空白占位符仍保留在第二个文本视图的位置。

我尝试使用 GONE,它消除了空白 space,但是我无法再次显示第二个文本视图。

你知道实现这个的方法吗?

示例:

////////////////////////////
initial state:
textview1
textview2
textview3
button1
button2

--> user pushes button1

new state:
textview1
textview3
button1
button2

--> user pushes button2

new state: initial state
////////////////////////////

谢谢

两种方式:

XML

在您的 XML 文件中。如果你想有初步的知名度

android:visibility="gone" <-- hides

android:visibility="visible" <-- makes it visible

Java

在 java 文件中。当您需要以编程方式更改它时

textView.setVisibility(View.GONE);//makes it disappear

textView.setVisibility(View.VISIBLE);//makes it visible again

不同的可见度:

  • 可见

自己说:将视图设置为可见

  • 隐形

隐藏视图,但它仍然占据 space。

  • 走了

隐藏视图,使其不占用 space。

在Kotlin中,可以这样设置

textView.visibility = if(visible) View.VISIBLE else View.GONE

或者您可以在视图中添加扩展

fun View.setVisible(visible: Boolean) {
    visibility = if (visible) {
        View.VISIBLE
    } else {
        View.GONE
    }
}

像这样使用它

textView,setVisible(true)