(Android)布局不会在setVisibility(view.GONE)之后重绘?

sma*_*dic 6 android android-linearlayout

在app我有:

LinearLayout linearLayout2 = (LinearLayout) findViewById(R.id.cvLinearLayout2);
Run Code Online (Sandbox Code Playgroud)

:

linearLayout2.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

我找不到办法带linearLayout2回来.

尝试了一切:

  linearLayout2.setVisibility(View.VISIBLE);
  linearLayout2.bringToFront();
  linearLayout2.getParent().requestLayout();
  linearLayout2.forceLayout();
  linearLayout2.requestLayout();
  linearLayout2.invalidate();
Run Code Online (Sandbox Code Playgroud)

但没有结果. linearLayout2有一个父母linearLayout1,所以我也试过:

  linearLayout1.requestLayout();
  linearLayout1.invalidate();
Run Code Online (Sandbox Code Playgroud)

仍然没有结果.linearLayout2留下来GONE.在我的应用程序中,我需要linearLayout离开,然后,过一会儿再次重绘它.请帮忙.

Vis*_*das 9

View.GONE将从屏幕中删除视图,并将视图占用的空间释放到屏幕上的其他视图.所以,"GONE"观点无法回归.你需要重新加载它.

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

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

ABCD

打电话后B.setVisibility(View.INVISIBLE);你会有:

A CD

但打电话后B.setVisibility(View.GONE);你会得到:

ACD


Gar*_*ahd 5

将视图的可见性设置为 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);
        }
    }}
Run Code Online (Sandbox Code Playgroud)

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