我有2个textviews,一个在另一个之上:
XXXXXXXXXXXX[TextView1]
XXXXXXXXXXXX[TextView2]
- 两个TextViews对齐的权利。 (因此上面的XXX)
- TextView1具有背景颜色。
- TextView2总是长于TextView1
- TextView1的左侧必须TextView2
对准我有以上4级的要求。现在一切正常,通过使用ConstraintLayout,其中TextView1的左边限制为TextView2的左边,而TextView2的宽度为wrap_content
。
但现在它来了第五届要求:
- TextView2可以消失,留下TextView1落后。
setVisibility(GONE)
不起作用,因为TextView2必须是wrap_content
。将在宽度变为0,因此TextView1以及(因为其左侧被约束为TextView2的左侧)
然后我试图设置TextView2的高度为0,使用以下代码:
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams)textView2.getLayoutParams();
lp.width = widthInPixelOrConstant;
textView2.setLayoutParams(lp);
糟糕,什么都没发生。 TextView2保持在那里,就好像什么都没有发生。 我谷歌搜索了半个小时,最后决定将TextView2
换成LinearLayout
。
,然后用下面的代码来设置TextView2的高度为0:
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)view.getLayoutParams();
lp.width = widthInPixelOrConstant;
view.setLayoutParams(lp);
......它的工作原理!
问题
所以,很显然,我们不能用我们之前使用 - setLayoutParams
尝试改变ConstraintLayout的孩子的高度或宽度在运行。
但是,将TextView2包装到LinearLayout中确实很愚蠢。
有谁知道如何在运行时更改ConstraintLayout的子宽度或高度?
你能分享整个布局吗? – Mehmed