在应用程序中我有:
LinearLayout linearLayout2 = (LinearLayout) findViewById(R.id.cvLinearLayout2);
和之后:
linearLayout2.setVisibility(View.GONE);
我找不到将linearLayout2
带回来的方法。
尝试了一切:
linearLayout2.setVisibility(View.VISIBLE);
linearLayout2.bringToFront();
linearLayout2.getParent().requestLayout();
linearLayout2.forceLayout();
linearLayout2.requestLayout();
linearLayout2.invalidate();
但没有结果。
linearLayout2
有一个父linearLayout1
,所以我也试过了:
linearLayout1.requestLayout();
linearLayout1.invalidate();
仍然没有结果。 linearLayout2
停留GONE
。
在我的应用程序中,我需要移开linearLayout
,然后,过一会儿再次重绘它。请帮忙。
答案 0 :(得分:9)
View.GONE
将从屏幕中删除视图,并且视图占用的空间将被释放到屏幕上的其他视图。所以,“GONE”观点无法回归。你需要重装它。
如果您想保留空间,可以使用View.INVISIBLE
。现在不删除视图,而是隐藏视图并显示空白区域。
在简单的插图中,您有以下设置:
ABCD
致电B.setVisibility(View.INVISIBLE);
后,您将拥有:
A CD
但是在致电B.setVisibility(View.GONE);
后,你会得到:
ACD
答案 1 :(得分:3)
将视图的可见性设置为GONE不应影响它使用方法setVisibility(View.VISIBLE)“返回”的能力
例如,我在我的一个应用中使用了此代码:
public void onCheckedChanged(CompoundButton checkBox, boolean isChecked{
if(checkBox == usesLocationCheckBox)
{
View view = findViewById(R.id.eventLocationOptions);
if(isChecked)
{
view.setVisibility(View.VISIBLE);
usesTimeCheckBox.setEnabled(false);
}
if(!isChecked)
{
view.setVisibility(View.GONE);
usesTimeCheckBox.setEnabled(true);
}
}}
它完美无缺。您的程序正在执行的其他一些代码必须负责。使用相关代码编辑您的帖子,我们可以为您提供更好的答案。