Android中的自定义视图控件

Posted 醉清风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中的自定义视图控件相关的知识,希望对你有一定的参考价值。

简介

当现有控件不能满足需求时,就需要自定义控件。

自定义控件属性

自定义控件首先要继承自View,重写两个构造函数。

第一个是代码中使用的:

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

另一个是资源解析程序使用的:

	public MyRect(Context context, AttributeSet attrs) {
		super(context, attrs);
		TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView);
		int color = ta.getColor(R.styleable.MyView_rect_color, 0xff00ffff);
		setBackgroundColor(color);
		ta.recycle();
	}

也可以给自定义控件指定属性,创建attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="MyView">
        <attr name="rect_color" format="color"/>
    </declare-styleable>

</resources>

然后就可以在layout文件中使用了:

    <com.wanxiang.www.learncustomview.MyRect
            android:id="@+id/myrect"
            android:layout_width="100dp"
            android:layout_height="100dp"
            jkxy:rect_color="#FF000FFF"/>

自定义控件皮肤

可以给button等控件通过background属性设置背景,并根据控件的状态做出改变。定义background为一个xml:

    <Button
            android:text="Button"
            android:background="@drawable/button_skin"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button"/>

  定义这个xml文件内容为:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false" android:drawable="@drawable/btn_normal"></item>
    <item android:state_pressed="true" android:drawable="@drawable/btn_pressed"></item>
</selector>

  即可以实现控件背景根据状态做出改变。

利用绘图API自定义视图

覆盖draw函数:

@Override
	public void draw(Canvas canvas) {
		super.draw(canvas);
		canvas.drawRect(0,0,500,500,paint);

	}
private void initproperties() {
paint = new Paint();
paint.setColor(Color.RED);
}

  

 

以上是关于Android中的自定义视图控件的主要内容,如果未能解决你的问题,请参考以下文章

标签视图中的 Android 操作栏搜索

android中的自定义视图

Android中的自定义控件

如何删除android中的自定义列表视图项?

从自定义适配器获取片段中的 UI 元素 ID

无法从android中的自定义列表视图中获取所选项目