如何以编程方式隐藏视图?


125

在我的应用程序中,我彼此之间有2 LinearLayout的权利。通过菜单选项,我希望能够使最下面的一个消失,并使最上面的一个消失LinearLayout

问题是,我不知道如何在Java中执行此操作。

它不必设置动画,我想在时隐藏Layout另一个活动(菜单)的返回内容OnActivityResult。菜单上activity设置了一个boolean我要签入的菜单OnActivityResult,并根据其值确定是否需要隐藏或显示底部Layout

// Only change value if it is different from what it was.
if(mUseVolumeButtonAsPTT != resultData.getBoolean("UseVolumeButtonAsPTT")){
    mUseVolumeButtonAsPTT = resultData.getBoolean("UseVolumeButtonAsPTT");
    if(!mUseVolumeButtonAsPTT){
        // Hide lower LinearLayout.
    } else {
        // Show lower LinearLayout.
    }
}

有人可以给我一个提示或链接吗?

Answers:


324

view.setVisibility(View.GONE)如果要从布局中删除它,可以致电。

或者,view.setVisibility(View.INVISIBLE)如果您只想隐藏它。

Android文档

无形

该视图是不可见的,但仍会占用空间以进行布局。与setVisibility(int)和一起使用android:visibility

去了

该视图是不可见的,并且它不占用任何空间用于布局目的。与setVisibility(int)和一起使用android:visibility


16
如果将其设置为view.setVisibility(View.INVISIBLE),用户仍然可以与之交互吗?
WhiskThimble

例如,如果一个活动设置为GONE,可以更改视图吗?我想您可以将它设置为“不可见”。
moatist 2014年

1
那么在RelativeLayout中呢?视图位置相互依赖。我不知道视图消失后会发生什么。
Zin Win Htet 2014年

@ErPragatiSingh请始终在复制粘贴的位置放置链接,并保持与OP想要说的类似的答案。:)
Sufian

@Sufian谢谢,全部来自android开发人员官方网站。
Prags

19

试试这个:

linearLayout.setVisibility(View.GONE);

0

Kotlin解决方案

view.isVisible = true
view.isInvisible = true
view.isGone = true

// For these to work, you need to use androidx and import:
import androidx.core.view.isVisible // or isInvisible/isGone

Kotlin扩展解决方案

如果您希望它们的长度更一致,可以使用可为空的视图,并降低编写错误布尔值的机会,请尝试使用以下自定义扩展名:

// Example
view.hide()

fun View?.show() {
    if (this == null) return
    if (!isVisible) isVisible = true
}

fun View?.hide() {
    if (this == null) return
    if (!isInvisible) isInvisible = true
}

fun View?.gone() {
    if (this == null) return
    if (!isGone) isGone = true
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.