0.前言
本文为上一篇文章的续篇,主要是内容过长,为了便于观看,分成了两篇文章
建议想系统学习的读者,先阅读上一篇文章:
[Android]开发App,你得知道这些6——自定义控件(一)准备工作
在读本文前,你最好有以下准备:
- (1)安装Android Stuido(以下简称AS)
- (2)有一定的Java基础
- (3)有一台安卓机
(可以用模拟器来代替,包括AS自带的以及网上的一些著名模拟器)- 若想要了解有关Java的文章等其他主要知识,可以去看前面的文章
(不会使用AS的读者可以参考下面这篇文章中的例子)
《[Java]开发安卓,你得掌握的Java知识2》
1.本文内容简介
-
继承方式自定义控件(xml方式)
继承方式的控件
xml文件
第零步 建议先完成java代码方式的自定义控件方式
这里会简略地说一下,首先,准备好drawable资源,在MainActivity同一个文件夹下,创建一个类,继承一个Layout(本文继承的是RelativeLayout)取名为Title,然后ctrl+0(选择重写的函数),选择前三个函数
- 如果想要观看详细过程的,去看:
[Android]开发App,你得知道这些6——自定义控件(一)
这里不再赘述
xml用到的是后面两个构造方法
一般情况下我们为了写代码方便,会把第二个代码中的内容,改成this(context,attrs,0)
这样的话,无论有没有defStyleAttr,都会走最后一个构造方法,避免代码冗余
第一步 创建一个values的xml文件
找到res->values
右键->New->Values resource file
起名字(其他不用动)
第二步 完成xml设置
输入"<decl",出现提示回车即可
name选择你要通过xml方式自定义的控件的类
此时直接输入">"可以补全
在<declare-styleable>标签里面添加对应的属性
- 这里的name表示参数名,就是xml添加控件的时候,可以设置的参数
- format表示属性的数据类型,如果有多种可能,用"|"隔开(如backgroundRes)
- 另外,这些参数的来源,可以参考java代码方法添加控件的时候,所需要的参数,因此这就是最好先要弄好java代码方式的原因(需要的去看上一篇文章)
最后可以实现xml里面这么添加(现在还不行)
代码:(用来复制)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Title">
<attr name="titleString" format="string"/>
<attr name="rightBtnString" format="string"/>
<attr name="hasReturnBtn" format="boolean"/>
<attr name="backgroundRes" format="integer|reference|color"/>
</declare-styleable>
</resources>
第三步 在Title类的第三个中获取设置的属性
(后面会给全代码的)
- 这里的if(attrs != null)用来判断是否有设置属性(如果有,则attrs不会是null)
而TypeArray用来获取设置的属性所组成的数组
先在外面声明好变量
然后在下面获取
最后通过之前java代码创建的时候使用的方法,对属性进行赋值(这些方法上一篇文章有)
第四步 在activity_main.xml中添加控件
选择第一个即可
设置对应的属性
效果:
总结
1.这次的两篇文章讲了自定义控件中的组合方式创建,由于使用的是系统自带的控件,因此其实更多的是考验编写者的逻辑思维
2.两篇文章中的代码书写逻辑我略微省去了一些(篇幅有限),如果有一定基础,其实并不难看懂
3.这次的这个标题,可以作为一个模板,以后再要使用类似的标题,可以直接用这次的自定义控件
网友评论