在我的申请中,我有两个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.
}
}
有人可以给我一个关于我应该怎么做的提示或链接吗?
答案 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
如果您希望它们的长度更一致,可以使用可为空的视图,并降低编写错误布尔值的机会,请尝试使用以下自定义扩展名:
// 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()
}