android使用自己定义属性AttributeSet
这里为了演示使用自己定义变量,字体大小改用自己定义的属性。
首先要创建变量,创建了个values/attrs.xml文件,文件名称随意,可是要在values文件夹下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="button">
<attr name="textSize" format="dimension" />
</declare-styleable>
</resources>
根标签要是resources,定义的变量要有个名字,declare-styleable name="button">,这里定义名称为button。在这个名称里,能够有多个自己定义属性。定义了个名为textSize的属性,格式是dimension,这个format指定了textSize属性的类型,仅仅能用于定义字体大小。
在布局文件里通过自己定义属性赋值:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res/com.easymorse.textbutton"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/background_color">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="10dip" />
<LinearLayout android:layout_width="fill_parent"
android:layout_height="40dip">
<com.easymorse.textbutton.TextButton
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:text="电影"
android:gravity="center_vertical|center_horizontal"
android:background="@drawable/button" android:focusable="true"
android:clickable="true" myapp:textSize="20sp" />
这里在根标签中添加了:
xmlns:myapp=http://schemas.android.com/apk/res/com.easymorse.textbutton
声明了myapp这个名字空间,myapp是随意的名称,自己能够随便起名,后面的:
http://schemas.android.com/apk/res/
是固定的。再后面接的是应用的包名。
在以下自己定义button中的:myapp:textSize,就是使用<attr name="textSize"这个变量了,给变量赋值。
还须要一个过程,就是在程序中获取到这个赋值:
public TextButton(final Context context, AttributeSet attrs) {
this(context, attrs, 0);
TypedArray typedArray=context.obtainStyledAttributes(attrs, R.styleable.button);
this.setTextSize(typedArray.getDimension(R.styleable.button_textSize, 15));
typedArray.recycle();
当中,TypedArray实例是个属性的容器,context.obtainStyledAttributes()方法返回得到。AttributeSet是节点的属性集合,在本例中是<com.easymorse.textbutton.TextButton节点中的属性集合。
这句话:
typedArray.getDimension(R.styleable.button_textSize,
15)
将获取自己定义textSize的值,假设没有,则使用默认的值,15。
最后别忘记调用:
typedArray.recycle();
作用是:
Give back a previously retrieved StyledAttributes, for later re-use.
这里的自己定义属性的format,能够有非常多种:
- reference
- string
- color
- dimension
- boolean
- integer
- float
- fraction
- enum
- flag
android使用自己定义属性AttributeSet相关推荐
- android开发笔记之属性动画
属性动画简单介绍 作用对象:任意 Java 对象 不再局限于 视图View对象 实现的动画效果:可自定义各种动画效果 不再局限于4种基本变换:平移.旋转.缩放 & 透明度 特点 作用对象进行了 ...
- Android动画框架(二)----属性动画
转载请注明出处:http://blog.csdn.net/fishle123/article/details/50705928 Android提供三种形式动画:视图动画,帧动画,属性动画.其中属性动画 ...
- android中xml tools属性详解
第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了 ...
- android 使用xml定义自己的View
android 使用xml定义自己的View 运行效果图: 主要activity: public class MainActivity extends Activity { @Override pro ...
- android中xmlns:tools属性详解
第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了 ...
- Android之——自己定义TextView
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47082241 在这一篇博文中,将向大家介绍怎样以最简单的方式,来自己定义Andro ...
- 说说Android应用的persistent属性
2019独角兽企业重金招聘Python工程师标准>>> 说说Android应用的persistent属性 侯 亮 1 启动persistent应用 在Android系统中,有一种永久 ...
- android shape 无边框颜色,Android 使用shape定义不同控件的的颜色、背景色、边框色...
Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...
- android中 menu的属性详细解释
android中 menu的属性详细解释 <?xml version="1.0" encoding="utf-8"?> <menu xmlns ...
最新文章
- 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!...
- 新浪微博WeiboManageAction的java实现
- 云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维
- understanding the Euler Lagrange equation
- ubuntu linux 搭建 webssh 网页ssh远程登录其他服务器
- 12.软件架构设计:大型网站技术架构与业务架构融合之道 --- CAP理论
- 如何用计算机制作思维导向图,电脑怎样制作思维导图,手把手教你绘制思维导图简单方法...
- 华人AI学者大盘点:清华培养了最多的高层次人才,韩家炜、吴恩达论文被引数“登顶”
- CSS font-family字体大合集
- 消息队列——ActiveMQ使用及原理浅析
- QtCreator总是崩溃卡死的问题
- [原创]服装鞋帽企业配送中心优化方案 WMS仓储管理系统
- 海尔互联网转型成功了吗?
- 数据分析项目实战项目一:CPC广告优化以及bilibili订单分析(下)
- 工作中的完美主义心态
- tdk怎么设置_TDK设置常见问题
- CoordinatorLayout+Behavior讲解
- 小米(实习一面之牛客面经)
- 移动端(ios and android)长按识别二维码(含js与原生互调)
- docker实战之Dockerfile构建部署项目(三)
热门文章
- ssh连接的时候,出现“THE AUTHENTICITY OF HOST XXX CAN’T BE ESTABLISHED”警告
- 网上支付方式 ,网上支付方式有哪些
- Maven高级-私服
- java关于多线程并发和异步操作由浅入深
- 也测一个PS3111 / HT9530 / AS2258新玩意儿,做个固态U盘?
- 【POJ No. 1256】 字谜 Anagram
- Mediapipe人脸关键点检测
- jredis 工具_java中的redis工具类
- 无刷直流电机、永磁同步电机与开关磁阻电机
- AirSim动态 | 安装配置AirSim环境(一)