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

时间:2011-04-22 13:54:17

标签: java android

在我的申请中,我有两个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.
    }
}

有人可以给我一个关于我应该怎么做的提示或链接吗?

3 个答案:

答案 0 :(得分:290)

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

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

来自Android Docs

  

<强> INVISIBLE

     

此视图不可见,但仍会占用布局空间。与setVisibility(int)android:visibility一起使用。

     

<强> GONE

     

此视图不可见,并且不需要任何空间进行布局。与setVisibility(int)android:visibility一起使用。

答案 1 :(得分:17)

试试这个:

linearLayout.setVisibility(View.GONE);

答案 2 :(得分:1)

科特林溶液

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()
}