这里为了演示使用自己定义变量,字体大小改用自己定义的属性。

首先要创建变量,创建了个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相关推荐

  1. android开发笔记之属性动画

    属性动画简单介绍 作用对象:任意 Java 对象 不再局限于 视图View对象 实现的动画效果:可自定义各种动画效果 不再局限于4种基本变换:平移.旋转.缩放 & 透明度 特点 作用对象进行了 ...

  2. Android动画框架(二)----属性动画

    转载请注明出处:http://blog.csdn.net/fishle123/article/details/50705928 Android提供三种形式动画:视图动画,帧动画,属性动画.其中属性动画 ...

  3. android中xml tools属性详解

    第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了 ...

  4. android 使用xml定义自己的View

    android 使用xml定义自己的View 运行效果图: 主要activity: public class MainActivity extends Activity { @Override pro ...

  5. android中xmlns:tools属性详解

    第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了 ...

  6. Android之——自己定义TextView

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47082241 在这一篇博文中,将向大家介绍怎样以最简单的方式,来自己定义Andro ...

  7. 说说Android应用的persistent属性

    2019独角兽企业重金招聘Python工程师标准>>> 说说Android应用的persistent属性 侯 亮 1 启动persistent应用 在Android系统中,有一种永久 ...

  8. android shape 无边框颜色,Android 使用shape定义不同控件的的颜色、背景色、边框色...

    Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...

  9. android中 menu的属性详细解释

    android中 menu的属性详细解释 <?xml version="1.0" encoding="utf-8"?> <menu xmlns ...

最新文章

  1. 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!...
  2. 新浪微博WeiboManageAction的java实现
  3. 云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维
  4. understanding the Euler Lagrange equation
  5. ubuntu linux 搭建 webssh 网页ssh远程登录其他服务器
  6. 12.软件架构设计:大型网站技术架构与业务架构融合之道 --- CAP理论
  7. 如何用计算机制作思维导向图,电脑怎样制作思维导图,手把手教你绘制思维导图简单方法...
  8. 华人AI学者大盘点:清华培养了最多的高层次人才,韩家炜、吴恩达论文被引数“登顶”
  9. CSS font-family字体大合集
  10. 消息队列——ActiveMQ使用及原理浅析
  11. QtCreator总是崩溃卡死的问题
  12. [原创]服装鞋帽企业配送中心优化方案 WMS仓储管理系统
  13. 海尔互联网转型成功了吗?
  14. 数据分析项目实战项目一:CPC广告优化以及bilibili订单分析(下)
  15. 工作中的完美主义心态
  16. tdk怎么设置_TDK设置常见问题
  17. CoordinatorLayout+Behavior讲解
  18. 小米(实习一面之牛客面经)
  19. 移动端(ios and android)长按识别二维码(含js与原生互调)
  20. docker实战之Dockerfile构建部署项目(三)

热门文章

  1. ssh连接的时候,出现“THE AUTHENTICITY OF HOST XXX CAN’T BE ESTABLISHED”警告
  2. 网上支付方式 ,网上支付方式有哪些
  3. Maven高级-私服
  4. java关于多线程并发和异步操作由浅入深
  5. 也测一个PS3111 / HT9530 / AS2258新玩意儿,做个固态U盘?
  6. 【POJ No. 1256】 字谜 Anagram
  7. Mediapipe人脸关键点检测
  8. jredis 工具_java中的redis工具类
  9. 无刷直流电机、永磁同步电机与开关磁阻电机
  10. AirSim动态 | 安装配置AirSim环境(一)