Android:隐藏元素[重复]

Posted

技术标签:

【中文标题】Android:隐藏元素[重复]【英文标题】:Android: hide an element [duplicate] 【发布时间】: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 代码中做到这一点? 【参考方案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)

【讨论】:

以上是关于Android:隐藏元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android在btn上隐藏键盘单击[重复]

当android应用程序后台运行时如何在android中隐藏视图(在后台运行时不停止android拍摄快照)[重复]

通过单击 Android Map Fragment 中的地图来隐藏 UI 元素

在 Android WebView 中隐藏 HTML 元素?

当softKeyBoard隐藏按钮和其他元素时如何使布局可滚动[ANDROID]

React-Native Android 中隐藏的元素溢出