android 自定义view attr
来源:互联网 发布:毛领皮夹克 知乎 编辑:程序博客网 时间:2024/06/04 08:13
在xml 文件里定义控件的属性,我们已经习惯了android:attrs="" ,那么我们能不能定义自己的属性能,比如:test:attrs="" 呢?答案是肯定的.
好了我就不卖关子了,直接进入主题。大致以下步骤:
一、 在res/values 文件下定义一个attrs.xml 文件.代码如下:
获取,MyView 就是定义在<declare-styleable name="MyView "></declare-styleable> 里的 名字,获取里面属性用 名字_ 属性 连接起来就可以.TypedArray 通常最后调用 .recycle() 方法,为了保持以后使用该属性一致性!teSet attrs)
MyView.java 全部代码如下:
好了我就不卖关子了,直接进入主题。大致以下步骤:
一、 在res/values 文件下定义一个attrs.xml 文件.代码如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyView"> <attr name="textColor" format="color" /> <attr name="textSize" format="dimension" /> </declare-styleable> </resources>
<declaer-styleable> eclipse没有提示,关闭eclipse再开的时候就有 不明白
name中间不能用下划线等
二、 我们在MyView.java 代码修改如下,其中下面的构造方法是重点,我们获取定义的属性我们R.sytleable.MyView_textColor, 获取方法中后面通常设定默认值(float textSize = a.getDimension(R.styleable.MyView_textSize, 36 ); ), 防止我们在xml 文件中没有定义.从而使用默认值!获取,MyView 就是定义在<declare-styleable name="MyView "></declare-styleable> 里的 名字,获取里面属性用 名字_ 属性 连接起来就可以.TypedArray 通常最后调用 .recycle() 方法,为了保持以后使用该属性一致性!teSet attrs)
MyView.java 全部代码如下:
package com.example.myview;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.util.Log;import android.view.View;public class MyView extends View {private Paint mPaint;private static final String mString = "Welcome to Mr Wei's blog";public MyView(Context c) {super(c);mPaint = new Paint();}public MyView(Context c,AttributeSet attrs){super(c,attrs);mPaint = new Paint();TypedArray a = c.obtainStyledAttributes(attrs,R.styleable.MyView);int textColor = a.getColor(R.styleable.MyView_textColor,0XFFFFFFFF);float textSize = a.getDimension(R.styleable.MyView_textSize, 36);Log.w("tag","------"+textSize+"-----");mPaint.setTextSize(textSize);mPaint.setColor(textColor);a.recycle();}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);//设置填充mPaint.setStyle(Style.FILL);//画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);//mPaint.setColor(Color.BLUE);//绘制文字canvas.drawText(mString, 10, 110, mPaint);}}
构造方法 a.recyle()一定不能忘,
三、将我们自定义的MyView 加入布局main.xml 文件中,平且使用自定义属性,自定义属性必须加上:
xmlns:test ="http://schemas.android.com/apk/res/com.android.tutor"蓝色 是自定义属性的前缀,红色 是我们包名.
main.xml 全部代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:test="http://schemas.android.com/apk/res/com.android.tutor" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <com.android.tutor.MyView android:layout_width="fill_parent" android:layout_height="fill_parent" test:textSize="20px" test:textColor="#fff" /> </LinearLayout>
只要myview.java写正确。test: eclipse会自动提示
四、运行之
- android 自定义view attr
- Android自定义View 之attr
- Android自定义View之资源Attr
- Android自定义View之属性(Attr)解析
- Android 自定义view (一)——attr 理解
- Android 自定义view(二) —— attr 使用
- Android自定义View的属性,attr format取值类型
- Android 自定义View 中attr属性 深入解析
- Android 自定义 attr属性
- 自定义View的attr文件的使用
- 自定义View和Attr联合使用
- Android中View自定义XML属性详解以及R.attr与R.styleable的区别
- Android中View自定义XML属性详解以及R.attr与R.styleable的区别
- Android中View自定义XML属性详解以及R.attr与R.styleable的区别
- Android自定义attr和style
- android自定义控件之Attr
- Android自定义View及自定义控件属性declare-styleable:自定义控件的属性(attr.xml,TypedArray)的使用
- Android View---自定义View
- string和String 的对比
- JS中style.display和style.visibility的区别
- hadoop乱码
- Ubuntu 12.04 Unity桌面环境vnc配置手记
- Android开发入门教程--2.Android应用程序结构分析
- android 自定义view attr
- nginx upstream 的几种分配方式
- OAUTH协议简介
- ios开发之锁屏代码
- onInterceptTouchEvent和onTouchEvent调用时序
- 开发人员经验总结
- 关于生产者消费者排序问题
- Android开发入门教程--1.开发环境的搭建
- String类,C++实现