我有一个布局,其根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对象的引用,而不必重复创建新对象。