91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

onLayout()與自定義View布局實現

小樊
83
2024-08-14 07:19:39
欄目: 編程語言

onLayout()方法是ViewGroup類中的一個重要方法,用于確定子View的位置和大小。當一個ViewGroup的子View發生變化時,系統會調用onLayout()方法來重新布局子View。

自定義View的布局實現可以通過重寫onLayout()方法來實現。在自定義View中,可以在onLayout()方法中設置子View的位置和大小,以實現自定義的布局效果。

例如,假設我們有一個自定義的LinearLayout,需要實現子View按照一定的規則進行布局。我們可以重寫LinearLayout的onLayout()方法,然后在方法中設置子View的位置和大小。

public class CustomLinearLayout extends LinearLayout {

    public CustomLinearLayout(Context context) {
        super(context);
    }

    public CustomLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        
        // 自定義布局規則
        int childCount = getChildCount();
        int top = 0;
        for (int i = 0; i < childCount; i++) {
            View child = getChildAt(i);
            int childWidth = child.getMeasuredWidth();
            int childHeight = child.getMeasuredHeight();
            child.layout(0, top, childWidth, top + childHeight);
            top += childHeight;
        }
    }
}

在上面的例子中,我們重寫了LinearLayout的onLayout()方法,實現了一個自定義的布局規則:子View依次垂直排列,頂部對齊。在方法中,我們遍歷子View,設置每個子View的位置和大小。

通過重寫onLayout()方法,我們可以實現各種自定義的布局效果,從而滿足不同的設計需求。

0
景东| 高雄市| 东至县| 布尔津县| 婺源县| 黄山市| 淮安市| 怀化市| 罗山县| 青田县| 赞皇县| 拉孜县| 西华县| 西乌珠穆沁旗| 张家川| 长沙县| 龙山县| 库车县| 玛纳斯县| 晋城| 永清县| 屯昌县| 吉安县| 屏东市| 盖州市| 龙陵县| 聂荣县| 搜索| 吴桥县| 太仆寺旗| 海晏县| 泰宁县| 青岛市| 怀宁县| 颍上县| 神池县| 黔东| 福贡县| 菏泽市| 北票市| 重庆市|