我有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