1.定义attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyView">
<attr name="textColor" format="color" />
<attr name="textSize" format="dimension" />
<attr name="text" format="string" />
</declare-styleable>
</resources>
2.xml中使用自定义属性
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myandroid="http://schemas.android.com/apk/res/cn.com.androidtest"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<cn.com.androidtest.ui.MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
myandroid:textColor="#ff0000"
myandroid:textSize="20px"
myandroid:text="http://wujiandong.iteye.com"/>
</LinearLayout>
3.命名规则
方式一:
命名空间写法:xmlns:空间名="http://schemas.android.com/apk/res/自定义组件所在包名"
空间名随便定义,引用时保持一致,如myandroid
方式二:
命名空间写法:xmlns:空间名="http://schemas.android.com/apk/res-auto"
空间名随便定义,引用时保持一致,如myandroid
区别:
Issue 9656: Library projects don't support custom XML attributes for custom classes
Solution:
Upgrade to latest SDK & ADT version (fixed was released since r17) and usehttp://schemas.android.com/apk/res-auto
如果你当前工程是做为lib使用,那么你如上所写 ,会出现找不到自定义属性的错误 ,这时需要使用"http://schemas.android.com/apk/res-auto"Added support for custom views with custom attributes in libraries. Layouts using custom attributes must use the namespace URI
http://schemas.android.com/apk/res-auto instead of the URI that includes the app package name. This URI is replaced with the app specific one at build time.