【问题标题】:Android: hide an element [duplicate]Android:隐藏元素[重复]
【发布时间】:2017-07-25 06:51:54
【问题描述】:

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

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

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

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

您知道实现此目的的方法吗?

例子:

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

--> user pushes button1

new state:
textview1
textview3
button1
button2

--> user pushes button2

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

谢谢

【问题讨论】:

  • I tried with GONE, which eliminated the blank space, however I could not make the second text view appear again. 您必须将其可见性重新设置为可见。
  • 你是如何尝试让它出现的?您应该再次将其可见性设置为可见
  • 你也可以通过设置可见性再次可见GONE texView。
  • 试试android:layout_weight="0"android:layout_weight="1"
  • @MehranZamani 如何从 java 代码中做到这一点?

标签: android element visibility


【解决方案1】:

两种方式:

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

不同的可见性:

  • 可见

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

  • 不可见

隐藏视图,但仍占用空间。

  • 走了

隐藏视图,使其不占空间。

【讨论】:

    【解决方案2】:

    在 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)
    

    【讨论】:

      猜你喜欢
      • 2020-03-02
      • 1970-01-01
      • 2017-06-02
      • 2022-07-27
      • 2014-04-13
      • 2013-10-10
      • 2013-08-29
      • 2014-01-13
      • 2013-08-27
      相关资源
      最近更新 更多