標籤:styleable declare-styleable android namespace xml
1.簡單一實例
(1).在res/values檔案下定義一個attrs.xml檔案
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="my"> <attr name="content" format="string" /> <attr name="backcolor" format="reference|color" /> </declare-styleable></resources>
(2).布局檔案使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:my="http://schemas.android.com/apk/res/com.example.xmpptest" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.example.xmpptest.MyTextView android:layout_width="match_parent" android:layout_height="wrap_content" my:content="mycolor" > </com.example.xmpptest.MyTextView></LinearLayout>
(3).自訂控制項設定
public class MyTextView extends TextView {public MyTextView(Context context) {this(context, null);}public MyTextView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public MyTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.my);String str = a.getString(R.styleable.my_content);setText(str + "@@");a.recycle();}}
2.其它備忘
(1).定義的每個attr中format應該為指定的類型,string/integer/dimension/reference(引用R檔案)/color/enum/boolean,多個format可以使用|隔開,其它都一樣,執行個體enum
<declare-styleable name="my"> <attr name="content" format="string" /> <attr name="backcolor" format="reference|color" /> <attr name="size"> <enum name="fill_parent" value="-1" /> <enum name="wrap_content" value="-2" /> </attr></declare-styleable>
(2).布局檔案中的XML namespace規則,xmlns:toolbar=http://schemas.android.com/apk/res/[packagename]
Android_declare-styleable_自訂控制項的屬性