【发布时间】:2018-04-01 10:24:08
【问题描述】:
故事
我有 2 个文本视图,一个在另一个之上:
XXXXXXXXXXXX[TextView1]
XXXXXXXXXXXX[TextView2]
- 两个 TextView 都向右对齐。 (因此上面的 XXX)
- TextView1 有背景色。
- TextView2 总是比 TextView1 长
- TextView1 的左边必须与 TextView2 对齐
我有以上 4 个要求。现在使用 ConstraintLayout 一切正常,其中 TextView1 的左侧被约束到 TextView2 的左侧,TextView2 的宽度为wrap_content。
但现在是第 5 个要求:
- TextView2 可以消失,留下 TextView1。
setVisibility(GONE) 不起作用,因为 TextView2 必须是 wrap_content。它的宽度将变为 0,因此 TextView1 也将变为 0(因为它的左侧被限制在 TextView2 的左侧)
然后我尝试使用以下代码将 TextView2 的高度设置为 0:
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams)textView2.getLayoutParams();
lp.width = widthInPixelOrConstant;
textView2.setLayoutParams(lp);
哎呀,什么都没有发生。 TextView2 仍然存在,好像什么也没发生。
我google了半个小时,最后决定把TextView2换成LinearLayout。
然后使用下面的代码将TextView2的高度设置为0:
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams )view.getLayoutParams();
lp.width = widthInPixelOrConstant;
view.setLayoutParams(lp);
......它有效!!!
问题
因此,显然,我们不能使用之前使用的方法 - setLayoutParams 来尝试在运行时更改 ConstraintLayout 子项的高度或宽度。
但是,将 TextView2 包装在 LinearLayout 中真的很愚蠢。
有谁知道如何在运行时更改 ConstraintLayout 的子宽度或高度?
【问题讨论】:
-
你能分享整个布局吗?
标签: android android-constraintlayout