我有一个布局,其根ViewGroup有两个子代,其中只有一个始终可见。如果不适用,则会在运行时将另一个孩子的可见性设置为View.GONE

当两个孩子都可见时,将高度设置为wrap_content,并且布局看起来不错。问题是当另一个消失时,我想将可见视图扩展到match_parent

有什么办法可以做到这一点或等效?

最佳答案

您可以像这样更改任何视图的布局:

view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


构造函数将宽度乘以高度,如new LayoutParams(int width, int height)所示。
此外,每种ViewGroup类型都有一个LayoutParams类。确保导入引用特定ViewGroup的对象。因此,如果您的ViewGroup是LinearLayout,请使用:

import android.widget.LinearLayout.LayoutParams;





  我尝试解决这个策略失败


我不确定您在哪里遇到麻烦,但是这种方法只需要几个额外的代码:

// When you want to show both views
view1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
view2.setVisibility(View.VISIBLE);
...

// When you want to hide the second view
view1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
view2.setVisibility(View.GONE);


如果多次隐藏/显示视图,则可以保存对每个LayoutParams对象的引用,而不必重复创建新对象。

10-07 19:45
查看更多