step 1. attr.xml中定义的属性
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <declare-styleable name="MyItem">
- <attr name="text" format="string" />
- <attr name="color" format="color"/>
- <attr name="size" format="dimension" />
- <attr name="image_src" format="reference"/>
- <attr name="num" format="integer" />
- </declare-styleable>
- </resources>
step 2. 定义布局文件
step 3. 封装控件类
- public class MyItem extends LinearLayout {
- public MyItem(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
初始化
- LayoutInflater layoutInflater = (LayoutInflater) context.
- getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- layoutInflater.inflate(R.layout.xxx, this);
获取控件属性(当属性识别不了时,clear project)
- TypedArray typedArray = context.obtainStyledAttributes(attrs
- ,R.styleable.MyItem);
- String str = typedArray.getString(R.styleable.MyItem_text);
- float size = typedArray.getDimension(R.styleable.MyItem_size,
- 20);
- int imageSrc = typedArray.getResourceId(R.styleable.MyItem_image_src, 0);
- int num = typedArray.getInt(R.styleable.MyItem_num, 255);
step 4. 使用