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自定义属性理解和应用

在Android开发的过程中,为了在用户界面上添加Android自带的View,可以在一个xml布局中指定一个View,并通过它相应的元素属性控制该View的外观和行为。 但是,有时候我们需要自己定义...
  • xyzjl
  • xyzjl
  • 2015年07月20日 20:18
  • 1362

android自定义属性

1、自定义属性时,先在value中建立一个xml,如
  • u012348345
  • u012348345
  • 2015年04月20日 21:11
  • 276

Android自定义属性

一、前言:         我们在开发应用时,会经常去自定义一些UI控件,而这些UI控件可能是一个小功能,或是一个复合型的大功能集合,如果是大功能集合,可能会根据不同的需求,提供给用户一些可选择属性...
  • qingye_love
  • qingye_love
  • 2013年09月02日 13:49
  • 999

Android自定义属性点出来记录(命名空间没有写对)

在我们自定义View的时候 现在的 属性 (width height) 不能满足 控件需要的时候 我们需要自定义属性: 首先们 新建一个View继承自view package com.exam...
  • Hu_wenpeng
  • Hu_wenpeng
  • 2017年03月24日 14:47
  • 296

Android自定义属性attrs

在res\values\ 下新建attrs.xml文件 指定style名字和属性名字以及属性的值类型 属性值: ...
  • qq_17513815
  • qq_17513815
  • 2014年12月25日 15:54
  • 457

Android自定义属性与自定义属性的获取

自定义属性的定义与获取,看了hyman老师的Android制作微信6.0界面,以及Android制作的QQ5.0侧滑菜单,深有感触,感觉学到了不少的东西,两个项目里面都运用到了android属性的定义...
  • qq_24868901
  • qq_24868901
  • 2015年04月13日 18:58
  • 4710

使用attrs.xml自定义属性

控件有很多属性,如android:id、android:layout_width、android:layout_height等,但是这些属性都是系统自带的属性。使用attrs.xml文件,可以自己定义...
  • lxg2015
  • lxg2015
  • 2017年04月22日 14:58
  • 239

自定义View-自定义属性如:app:circle_color ="@color/colorPrimary"

先在value下创建类似于attrs.xml的文件 resources> declare-styleable name="CircleView"> attr name="ci...
  • qq_25909453
  • qq_25909453
  • 2017年03月30日 11:23
  • 373

Android自定义属性-format

Android自定义属性-formatstring 字符串 定义 获取 TypedArray typedArra...
  • ko0491
  • ko0491
  • 2016年10月12日 17:07
  • 211

android自定义属性详解

  • z469441432
  • z469441432
  • 2014年11月24日 15:11
  • 369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android自定义属性
举报原因:
原因补充:

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