Android (安卓)布局赢得';设置可见性(view.GONE)后是否重新绘制?

Android (安卓)布局赢得';设置可见性(view.GONE)后是否重新绘制?,android,android-linearlayout,Android,Android Linearlayout,在应用程序中,我有: LinearLayout linearLayout2 = (LinearLayout) findViewById(R.id.cvLinearLayout2); 和之后的: linearLayout2.setVisibility(View.GONE); 我找不到方法将linearLayout2带回来。 尝试了一切: linearLayout2.setVisibility(View.VISIBLE); linearLayout2.bringToFront();

在应用程序中,我有:

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();
仍然没有结果<代码>线性布局2保持
消失

在我的应用程序中,我需要移动
linearLayout
,然后,过一会儿再重新绘制。请帮助。

视图。GONE
将从屏幕上删除视图,视图占用的空间将释放到屏幕上的其他视图。因此,“过去的”观点无法重现。你需要重新加载它

如果要保留空间,可以使用
View.INVISIBLE
。现在不会删除视图,而是隐藏视图并显示空白

在简单的图中,您有以下设置:

ABCD

调用
B.setVisibility(View.INVISIBLE)后您将拥有:

CD

但是在调用
B.setVisibility(View.GONE)之后您将获得:


ACD

将视图的可见性设置为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);
        }
    }}

它工作得非常好。您的程序正在执行的其他一些代码必须负责。使用相关代码编辑您的帖子,我们可能会给您一个更好的答案。

首先尝试不要将可见性设置为GONE(消失),并告知布局现在是否显示。除非您在使其消失和可见之间没有做错事,否则这种情况不会发生。只需检查您是否正在删除linearLayout2中包含的任何视图。发布一些代码片段.tnx,但我需要释放的空间,所以仍然保留“空间”,我需要移开linearlayout,一段时间后将其取回。更具体地说,它是全屏功能,所以我需要一段时间的全屏,一段时间后返回linearlayout2:-)在
消失后
您可以像
linearlayout2=(LinearLayout)findViewById(R.id.cvLinearLayout2)一样再次加载它和YourActivity.setLayout(linearLayout2)`没有这样的方法。YourActivity.setLayout(linearLayout2);正确,它应该是
setContentView(linearLayout2)
,谢谢你的指点。如何在不重新加载完整布局的情况下重新创建子布局?嗯..代码太大:-(setVisibility(View.VISIBLE)不起作用。但它很简单:我需要全屏功能。在onCreate()中,创建了linearLayout2,然后在触摸事件之后(但操作启动)我需要全屏,所以我需要“删除”linearlayout 2(已使用的view.GONE),然后过一段时间我需要它回来,我无论如何都做不到:-(view.setVisibility(view.INVISIBLE)对我不好,因为view仍然占用空间..我需要类似.removeView()的东西但这很复杂…希望我能解释一下…我需要全屏功能..删除视图然后用数据取回它你能在这里发布你的代码吗,这样我就可以更好地了解如何帮助你了?我也许能弄明白为什么View.VISIBLE不起作用。伙计们,它刚刚开始起作用!!!两天后..我删除了除View.setVis之外的所有内容ibility(View.GONE)和View.setVisibility(View.visibility)都可以正常工作,所以Garzahd说得对,它必须工作:-)谢谢!!