1、ViewGroup是一个容器,而这个容器是继承与View的。
2、ViewGroup是一个基类,并且是Layout和一些View组件的基类。
- @Override
- protected void onLayout(boolean changed, int l, int t, int r, int b) {
- }
在我们继承ViewGroup时会在除了构造函数之外提供这个方法,我们可以看到,在ViewGroup的源代码中方法是这样定义的,也就是父类没有提供方法的内容,需要我们自己实现。
当View要为所有子对象分配大小和位置时,调用此方法
- public void addView(View child) {
- addView(child, -1);
- }
a.可以是:条目布局
- //加载条目布局
- 一:
- LayoutInflater.from(context).inflate(R.layout.input_number_view, this, true);
-
- 二:
- View view = LayoutInflater.from(context).inflate(R.layout.input_number_view, this, false);
- addView(view);
这个方法是用来向View容器中添加组件用的。我们可以使用这个方法想这个ViewGroup中添加组件。
- public View getChildAt(int index) {
- if (index < 0 || index >= mChildrenCount) {
- return null;
- }
- return mChildren[index];
- }
这个方法用来返回指定位置的View
小练习:流式布局
- package com.example.customviewfortutu;
-
- import android.content.Context;
- import android.graphics.Color;
- import android.util.AttributeSet;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
-
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- * 流式布局
- * 2022/11/8
- */
- public class FlowLayout extends ViewGroup {
- /**
- * 水平间距
- */
- private int mHorizontalMargin = 40;
-
- /**
- * 垂直间距
- */
- private int mVerticalMargin = 40;
-
- public FlowLayout(Context context) {
- this(context, null);
- }
-
- public FlowLayout(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- List
dataList = new ArrayList<>(); - dataList.add("格纹大衣");
- dataList.add("网面鞋子清洁");
- dataList.add("鞋子清洁");
- dataList.add("鞋子塑封膜");
- dataList.add("早秋chic上衣甜辣");
- dataList.add("打底ins");
- dataList.add("打底");
- dataList.add("冬天懒人鞋");
- dataList.add("冬鞋一脚蹬");
- dataList.add("冬鞋");
- dataList.add("格纹大衣");
- dataList.add("网面鞋子清洁");
- dataList.add("鞋子清洁");
- dataList.add("鞋子塑封膜");
- dataList.add("早秋chic上衣甜辣");
- dataList.add("打底ins");
- dataList.add("打底");
- dataList.add("冬天懒人鞋");
- dataList.add("冬鞋一脚蹬");
- dataList.add("冬鞋");
- setData(dataList);
- }
-
- //设置数据
- public void setData(List
dataList) { - for (String s : dataList) {
- TextView textView = new TextView(getContext(