<resources>
<declare-styleable name="myView">
<attr name="textSize" format="dimension"/>
<attr name="textColor" format="color"/>
<attr name="text" format="string"/>
</declare-styleable>
</resources>
自定义组件在这里使用:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myandroid="http://schemas.android.com/apk/res/com.ybj.lesson"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表"
android:id="@+id/bt_list"/>
<com.ybj.lesson.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
myandroid:textSize="30sp"
myandroid:textColor="#00ff00">
</com.ybj.lesson.MyView>
</LinearLayout>
自定义组件控制类:
package com.ybj.lesson;
import com.ybj.lesson.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View {
private Paint paint = null;;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
//取出属性文件
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.myView);
//取出属性
float textSize = array.getDimension(R.styleable.myView_textSize, 25);
int textColor = array.getColor(R.styleable.myView_textColor, Color.BLUE);
String text = array.getString(R.styleable.myView_text);
paint = new Paint();
paint.setColor(textColor);
paint.setTextSize(textSize);
//关闭资源
array.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//绘制组件内容
canvas.drawText("aaaa", 10, 30, paint);
canvas.drawCircle(10, 20, 6, paint);
}
}