Android自定义属性

原创 2015年07月08日 17:54:44

Android自定义View有时需要自定义属性,然后动态获取属性值来影响view的展现。下面通过例子来说明Android自定义属性的过程,大体过程有:

  • 通过<declare-styleable> 声明自定义的属性
  • 通过xmlns:设置命名空间,引用属性,设置属性值
  • 通过TypedArray在代码里动态获取属性值

过程详细如下:
1、在工程目录res/values/attrs.xml下通过<declare-styleable>标签申明要自定义的属性,设置<attr>的name和format属性,format属性的设置参考:http://blog.csdn.net/wonengxing/article/details/15340827

<resources>
   <declare-styleable name="PieChart">
       <attr name="showText" format="boolean" />
       <attr name="labelPosition" format="enum">
           <enum name="left" value="0"/>
           <enum name="right" value="1"/>
       </attr>
   </declare-styleable>
</resources>

2、现在可以在xml布局文件中使用自定义的属性,但这些属性不属于http://schemas.android.com/apk/res/android 命名空间,而是属于命名空间:http://schemas.android.com/apk/res/[your package name],如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews">
 <com.example.customviews.charting.PieChart
     custom:showText="true"
     custom:labelPosition="left" />
</LinearLayout>

3、在代码中获取设置的属性值

public PieChart(Context context, AttributeSet attrs) {
   super(context, attrs);
   TypedArray a = context.getTheme().obtainStyledAttributes(
        attrs,
        R.styleable.PieChart,
        0, 0);

   try {
       mShowText = a.getBoolean(R.styleable.PieChart_showText, false);
       mTextPos = a.getInteger(R.styleable.PieChart_labelPosition, 0);
   } finally {
       a.recycle();//最后务必要调用recycle()方法,否则会对下次使用造成影响
   }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android自定义属性

  • 2015年08月08日 01:22
  • 1.37MB
  • 下载

Android自定义属性时format选项可以取用的值

1. reference:参考某一资源ID。     (1)属性定义:       (2)属性使用: ...
  • ygc87
  • ygc87
  • 2012年03月09日 14:52
  • 8447

AttrTest android自定义属性

  • 2013年03月12日 18:51
  • 984KB
  • 下载

Android自定义属性,format详解

1. reference:参考某一资源ID。     (1)属性定义:                                background" format = "referen...
  • pgalxx
  • pgalxx
  • 2011年09月10日 22:46
  • 24398

菜鸟进阶之深入理解android自定义属性(AttributeSet,TypedArray)

酝酿了很久,终于可以写篇关于android自定义属性的文章了,本来这篇文章的名字没有"菜鸟进阶之"的,然后发现这里的内容挺有难度,配得上这5个字了。 这里牵扯几个类比如AttributeSet、Typ...

Android自定义属性实现显示两行文字的button

最近项目有个需求是实现一个button上显示两个按钮,而且这两行文字可以改变,最终是通过自定义属性来解决的,下面是全部过程和代码: 一、在res/values文件下定义一个attrs.xml文件,fo...

Android自定义属性,attr format取值类型

原文链接:http://blog.csdn.net/sunny2come/article/details/6996943
  • fanxl10
  • fanxl10
  • 2014年11月20日 16:58
  • 1533

一、Android自定义属性,attr format取值类型

前言 在学习自定义控件的时候,避免不了使用自定义属性。下面总结了自定义属性的定义以及用法备忘。...

Android自定义属性理解和应用

在Android开发的过程中,为了在用户界面上添加Android自带的View,可以在一个xml布局中指定一个View,并通过它相应的元素属性控制该View的外观和行为。 但是,有时候我们需要自己定义...
  • xyzjl
  • xyzjl
  • 2015年07月20日 20:18
  • 1182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android自定义属性
举报原因:
原因补充:

(最多只允许输入30个字)