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应用程序后台运行时如何在android中隐藏视图(在后台运行时不停止android拍摄快照)[重复]
通过单击 Android Map Fragment 中的地图来隐藏 UI 元素
在 Android WebView 中隐藏 HTML 元素?