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

在我的应用程序中,我有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.
}
}

谁能给我一个提示或者链接,告诉我应该怎么做?

111241 次浏览

试试这个:

linearLayout.setVisibility(View.GONE);

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

view.setVisibility(View.INVISIBLE),如果你只是想隐藏它。

来自 Android 文档:

隐形

这个视图是不可见的,但是它仍然占用了布局的空间。

消失了

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

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
}

为了简化条件可见性,还可以添加以下内容:

fun View?.show(visible: Boolean) {
if (visible) show() else gone()
}


fun View?.hide(hide: Boolean) {
if (hide) hide() else show()
}


fun View?.gone(gone: Boolean = true) {
if (gone) gone() else show()
}