【问题标题】:How to hide a View programmatically?如何以编程方式隐藏视图?
【发布时间】:2026-01-04 01:10:01
【问题描述】:

在我的应用程序中,我有 2 个 LinearLayout 正上方。通过一个菜单选项,我希望能够使底部的消失,并让顶部的下拉到消失的LinearLayout

问题是,我不知道如何在 Java 中做到这一点。

它不必是动画的,我想在OnActivityResult 中隐藏另一个活动(菜单)返回时的Layout。菜单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.
    }
}

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

【问题讨论】:

    标签: java android


    【解决方案1】:

    试试这个:

    linearLayout.setVisibility(View.GONE);
    

    【讨论】:

      【解决方案2】:

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

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

      来自Android Docs

      不可见

      这个视图是不可见的,但它仍然占用空间用于布局。与setVisibility(int)android:visibility 一起使用。

      过去了

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

      【讨论】:

      • 如果设置为 view.setVisibility(View.INVISIBLE) 用户还能与之交互吗?
      • 如果视图设置为 GONE,Activity 是否可以更改视图?如果设置为 INVISIBLE,我想你可以。
      • RelativeLayout 中呢?视图位置相互依赖。我想知道视图消失后会发生什么。
      • @ErPragatiSingh 请始终将链接放在您复制粘贴的位置,并保持与 OP 想说的类似的答案。 :)
      • @Sufian 谢谢,全部来自安卓开发者官方网站。
      【解决方案3】:

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

      【讨论】:

        最近更新 更多