簡體   English   中英

Android自定義布局管理器-兒童布局

[英]Android custom layout manager - layout in children

我創建了一個從LinearLayout派生的自定義布局管理器。 (我並沒有真正使用很多LinearLayout功能,但我不想關心所有ViewGroup抽象方法。)我只覆蓋了

protected void onLayout(boolean changed, int l, int t, int r, int b)

方法,並為其每個子級在MyLayout.onLayout(...)中調用child.layout(...)。 所有其他東西都是原始的LinearLayout。 它將正常工作,如果孩子是沒有孩子的簡單控制(MyLayout的孫子),孩子將被正確地放在他們的父MyLayout中。

當我使用一些ViewGroup(LinearLayout,ViewSwitcher,...)將子節點作為MyLayout的子節點時出現問題。 在這種情況下,(MyLayout的)子代放置得很好,但(MyLayout的)孫子代不在每個子代內。 似乎沒有正確處理諸如wrap_content,fill_parent,layoutWeight之類的參數和值。 例如,MyLayout中的ViewSwitcher不顯示其內容,fill_parent的LinearLayouts(MyLayout的子代)子代(MyLayout的孫子)的大小為0px,CompoundButton(MyLayout的子代)有時不顯示其文本...

似乎myLayout.onLayout中的child.layout(...)正確設置了每個孩子的大小和位置,但是我需要調用其他一些方法來使每個孩子的布局運行良好(如果孩子是帶有孩子的ViewGroup)。 是否有類似的東西或剛剛更改了onLayout的MyLayout應該可以正常工作?

感謝您的所有建議。

聽起來你需要考慮到每個孩子的測量和呼叫測量()。 如果您的子級是視圖組,而子級是視圖,則您要遍歷子級並調用measure(int,int)。 然后孩子們應該對孫子孫女采取措施。

看看linearLayout來源: http//www.grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.6_r1/android/widget/LinearLayout.java# LinearLayout.onMeasure%28int%2Cint 29%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM