为自定义View在xml里面设置属性

至少在xml文件中写上上面的内容。其中com.example.xhelloworld.NewView这句是需要显示的控件所代表的类。Com.example.xhelloworld是类的包名,NewView是类名。这个类肯定是继承自View的自定义类(其实就是,使我们自己写的,这是废话了。。。),可以是在工程中直接源码添加xxxx.java的,也可以是在libs目录下自己新添加的jar包里面的。如果是jar包里面的一个类,则路径就是jar包里面,这个类的路径。

完成上面的两步之后就可以在代码中实例化这个布局文件了

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//setContentView(new MyView(this));

显示的效果同上图。

下面介绍如何实现自定义View的属性设置。实现自定义View的属性设置,需要:

·在values目录下建立attrs.xml文件,添加属性内容

·在布局文件中添加新的命名空间xmlns,然后可以使用命名空间给自定义的空间设置属性

·设置完属性之后,当然还要对其进行处理。在自定义View类中的构造方法中进行处理

根据这三步给一个例子进行说明一下

首先添加attrs.xml文件,在定义属性

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

<resources>

<declare-styleablename="MyView">

attr"textColor"format="color"/>

"textSize""dimension"/>

</declare-styleable>

</resources>

然后在布局文件中完成:

xmlns:my=http://schemas.android.com/apk/res/com.example.xhelloworld

com.example.xhelloworld.MyView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

my:textColor="#FFFFFFFF"

my:textSize="22dp"

/>

注:这步我在实现的时候出错,问题是显示找不到属性textColortextSize,这奇怪的错误。解决方法是,在写my:textColor="#FFFFFFFF"时,写到my之后,按alt+/,这是会自动添加一个xmlns,和my的路径是一样的,用生成的这个替换掉my就可以了。奇葩的问题就用奇葩的方法解决。起初我也不知道怎么弄,瞎搞出来的。

最后在MyView.java中添加另一个构造方法,并添加代码来处理从xml中获得的属性

publicMyView(Context context,AttributeSet attrs){

super(context,attrs);

mPaint=newPaint();

//TypedArray是一个用来存放由context.obtainStyledAttributes获得的属性的数组

//在使用完成后,一定要调用recycle方法属性的名称是styleable中的名称+“_”+属性名称//TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.MyView);

TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.MyView);

inttextColor = array.getColor(R.styleable.MyView_textColor,0XFF00FF00);提供默认值,放置未指定floattextSize = array.getDimension(R.styleable.MyView_textSize,36);

mPaint.setColor(textColor);

mPaint.setTextSize(textSize);

array.recycle();一定要调用,否则这次的设定会对下次的使用造成影响

}

完成之后就已经实现了自定视图的构造,自定义视图属性的添加很处理。现在完成的是一般的自定义视图,继承自TextView或者View等视图,也就是通过程序主UI线程完成更新的视图,如果是自定义SurfaceView,实现方法有所不同。

添加完之后肯定有很多疑问,自己去做可能还不能理解。这里再对上面操作进行解释说明。

背后的事

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇