天天看點

android自定義控件屬性——attr.xml的使用

有時候感覺android提供的控件不太符合自己需求,是以很想自定義一個控件。

android的控件都有屬性,例如android:textColor=""。

我們的自定義控件也需要有屬性的時候,就需要在res/values 檔案下定義一個attrs.xml 檔案.。

attrs.xml就用來建立和自定義控件有關的屬性。

一、在res/values 檔案下定義一個attrs.xml 檔案

代碼如下:

android自定義控件屬性——attr.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>