Android declare-styleable:自定义控件的属性(attr.xml,TypedArray)的使用

以launcher为例说明自定义控件的属性:

1、在layout里面定义控件,如:

<com.junction.launcher.DragLayer

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:launcher="http://schemas.android.com/apk/res/com.junction.launcher"

android:id="@+id/drag_layer" android:layout_width="match_parent" android:layout_height="match_parent">

<com.android.launcher.Workspace

android:id="@+id/workspace"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

launcher:defaultScreen="1">


<include android:id="@+id/cell1" layout="@layout/workspace_screen" />

<include android:id="@+id/cell2" layout="@layout/workspace_screen" />

<include android:id="@+id/cell3" layout="@layout/workspace_screen" />

</com.android.launcher.Workspace>

2、该控件workspace下面有一个属性是launcher:defaultScreen,这属性不是ViewGroup(workspace类是继承于ViewGroup)所定义的属性,那么我们可以在\res\values里面的attrs.xml里面定义

具体的定义方法如下:

<resources>

<declare-styleable name="Workspace">

<attr name="defaultScreen" format="integer"/>

</declare-styleable>

</resources>

引用方法是先申明xmlns:launcher="http://schemas.android.com/apk/res/com.junction.launcher"(R.java),这样就可以使用launcher:defaultScreen。

3、这样我们在Workspace的类里面就可以去除在layout里面对该属性的赋值,方法如下:

Int mDefaultScreen;

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Workspace, defStyle, 0);

mDefaultScreen = a.getInt(R.styleable.Workspace_defaultScreen, 1);

a.recycle();

++++++++++++++++++++++++++++++

自己案例:可看一个gifPlayer的demo程序。

其他案例:http://blog.csdn.net/Android_Tutor/archive/2010/04/20/5508615.aspx

++++++++++++++++++++++++++++++

转载自:http://blog.csdn.net/tinafhx/archive/2010/02/05/5290878.aspx



更多相关文章

  1. Android(安卓)自定义Dialog 控制
  2. android studio向activity_main.xml中拖控件不成功
  3. ECLIPSE android 布局页面文件出错故障排除Exception raised dur
  4. android实现气泡聊天
  5. 自定义开关
  6. android 之popupWindow 在指定位置上的显示
  7. 自定义键盘(一)
  8. Android(安卓)应用界面开发笔记
  9. Android(安卓)编译中的LOCAL_SDK_VERSION 和 LOCAL_PRIVATE_PLAT

随机推荐

  1. 如何使用 Markdown and Emmet
  2. 项目练习总结
  3. 从阿里云故障说 Io hang 是什么?
  4. JavaMySQL面试题,如何书写 update 避免表
  5. 监控系统项目实施--安装与部署--添加一台
  6. 关于极客时间活动的中奖公告
  7. 线程面试必备:线程状态和dump输出状态,文末
  8. 面试必备,电商系统中并发测试是怎样进行的
  9. MySQL:表级锁、行级锁、共享锁、排他锁、
  10. prometheus + granfana