天天看点

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>