RelativeLayout子View大小管教的一個問題

開發(fā)中需要等比例放大子view,去填滿父布局。因為子View的大小比例與父布局不同,所以最終結(jié)果是子View會比父布局大,有一部分會在父布局的外面。如下圖所示:

超出的兩種情況.png

一開始,我想想應該很簡單,只需要重新設置子View的LayoutParams即可。如下所示:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(1000, 1000);
mChildView.setLayoutParams(params);

打印了設置之前和之后的View寬高看了一下:

02-18 04:37:20.593 2101-2101/? I/System.out: mLayout is 788:788
02-18 04:37:20.593 2101-2101/? I/System.out: mChildView is 263:263
02-18 04:37:24.011 2101-2101/? I/System.out: mLayout is 788:788
02-18 04:37:24.011 2101-2101/? I/System.out: mChildView is 788:788

mChildView的大小是變了,但是它只是撐滿了父布局而已。。。

因為我的布局是比較復雜的,父布局是作為其他layout的子View存在的。剛開始以為是嵌套或者是weight設置導致的。但是試了一下,都沒有效果。

所以還是從父布局入手。我將父布局換成FrameLayout,再測試,竟然可以了?。?!

02-18 05:04:05.485 2251-2251/? I/System.out: mLayout is 788:788
02-18 05:04:05.485 2251-2251/? I/System.out: mChildView is 263:263
02-18 05:04:07.266 2251-2251/? I/System.out: mLayout is 788:788
02-18 05:04:07.266 2251-2251/? I/System.out: mChildView is 1000:1000

結(jié)論

在RelativeLayout中,子View的大小不能超過父布局。

最后

具體原因我也不是很清楚,懷疑和RelativeLayout的布局算法有關,有時間看下源碼找找原因...。如果您知道原理,希望能幫忙解惑哈??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容