有時候感覺android提供的控件不太符合自己需求,是以很想自定義一個控件。
android的控件都有屬性,例如android:textColor=""。
我們的自定義控件也需要有屬性的時候,就需要在res/values 檔案下定義一個attrs.xml 檔案.。
attrs.xml就用來建立和自定義控件有關的屬性。
一、在res/values 檔案下定義一個attrs.xml 檔案
代碼如下:
1. reference:參考某一資源ID。
(1)屬性定義:
<declare-styleable name = "名稱">
<attr name = "border_width" format = "dimension" />
</declare-styleable>
(2)屬性使用:
<com.example.circleimageview.CircleImageView
android:layout_width = "42dip"
android:layout_height = "42dip"
app:border_color="#00ffffff" />
2.color:顔色值
(1)屬性定義:
<declare-styleanle name="名稱">
<attr name="textColor" format="color"/>
</declare-styleable>
(2)屬性使用
<TextView
android:layout_width="42dip"
android:layout_height="42dip"
android:textColor="#00FF00"/>
3、boolean:布爾值
(1)屬性定義
<declare-styleable name="名稱">
<attr name="facusable" format="boolean">
</declare-styleable>
(2)屬性使用
<Button
android:layout_width="42dip"
android:layout_height="42dip"
android:focusable="true"/>
4、dimension:尺寸值
(1)屬性定義
<declare-styleable name="名稱">
<sttr name="layout_width" format="dimension"/>
</declare-styleable>
(2)屬性使用
<Button
android:layout_width="42dip"
android:layout_height="42dip"/>
5、float:浮點值
(1)屬性定義
<declare-styleable name="AlphaAnimation"
<attr name="fromAlpha" format="float">
<attr name="toAlpha" format="float">
</declare-styleable>
(2)屬性使用
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.7"/>
6、integer:整型值
(1)屬性定義
<declare-styleable name="AnimatedRotateDrawabe">
<attr name="visible"/>
<attr name="frameDuration" format="integer"/>
<attr name="frameCount" format="integer"/>
</declare-styleable>
(2)屬性使用
<animated-roate
xmlns:android = "http://schemas.android.com/apk/res/android"
android:drawable="@drawable/圖檔ID"
android:pivoteX="50%"
android:pivoteY="50%"
android:framesCount="12"
android:frameDuration="100"/>
7.string:字元串
(1)屬性定義:
<declare-styleable name="MapView">
<attr name="apiKey" format="string"/>
</declare-styleable>
(2)屬性使用
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"/>
8、fraction:百分數
(1)屬性定義
<declare-styleable name="RotateDrawable">
<attr name="visible"/>
<attr name="fromDegress" format="float"/>
<attr name="toDegress" formate=""/>
<attr name="pivotX" format="fraction"/>
<attr name="pivotY" format="fraction"/>
<attr name="drawable"/>
</declare-styleable>
(2)屬性的使用
<rotate
xmlns:android = "http://schemas.android.com/apk/res/android"
android:interpolator="@anim/動畫ID"
android:fromDegrees="0"
android:toDegress="360"
android:pivotX="200%"
android:pivotY="300%"
android:duration="5000"
android:repeatMode="restart"
android:repeatCount="infinite"/>
9、enum:枚舉值
(1)屬性定義:
<declare-styleable name="名稱">
<attr name="orientation">
<enum name="horizontal" value="0"/>
<enum name="vertical" value="1"/>
</attr>
</declare-styleable>
(2)屬性使用
<LinearLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
10、flag:位或運算
(1)屬性定義
<declare-styleable name="名稱">
<attr name="windowSoftInputMode">
<flag name="stateUnspecified" value="0"/>
<flag name="stateUnchanged" value="1"/>
<flag name="stateHidden" value="2"/>
<flag name="stateAlwaysHidden" value="3"/>
<flag name="stateVisible" value="4"/>
<flag name="stateAlwaysVisible" value="5"/>
<flag name="adjustUnspecified" value="0x00" />
<flag name="adjustResize" value="0x10"/>
<flag name="adjustPan" value="0x20"/>
<flag name="adjustNothing" value="0x30" />
</attr>
</declare-styleable>
(2)屬性使用
<activity
android:name=".SyleAndThemeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateUnspecified | stateUnchanged | stateHidden">
<intent-filter>
<action android:name="android:intent.category.LAUNCHER"/>
</intent-filter>