Android 中自定义属性格式详解
在 Android 项目的实际开发中,免不了要自定义一些控件或者 view,更高深一点的自定义 view 也应该可以直接在 xml 自定义属性,今天就来分享下自定义属性的格式。
1. reference:参考某一资源 ID
属性定义:
<declare-styleable name="名称">
<attr name="background" format="reference" />
</declare-styleable>
属性使用:
<ImageView
android:layout_width="42dip"
android:layout_height="42dip"
android:background="@drawable/图片 ID" />
2. color:颜色值
属性定义:
<declare-styleable name="名称">
<attr name="textColor" format="color" />
</declare-styleable>
属性使用:
<TextView
android:layout_width="42dip"
android:layout_height="42dip"
android:textColor="#00FF00" />
3. boolean:布尔值
属性定义:
<declare-styleable name="名称">
<attr name="focusable" format="boolean" />
</declare-styleable>
属性使用:
<Button
android:layout_width="42dip"
android:layout_height="42dip"
android:focusable="true" />
4. dimension:尺寸值
属性定义:
<declare-styleable name="名称">
<attr name="layout_width" format="dimension" />
</declare-styleable>
属性使用:
<Button
android:layout_width="42dip"
android:layout_height="42dip" />
5. float:浮点值
属性定义:
<declare-styleable name="AlphaAnimation">
<attr name="fromAlpha" format="float" />
<attr name="toAlpha" format="float" />
</declare-styleable>
属性使用:
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.7" />
6. integer:整型值
属性定义:
<declare-styleable name="AnimatedRotateDrawable">
<attr name="visible" />
<attr name="frameDuration" format="integer" />
<attr name="framesCount" format="integer" />
<attr name="pivotX" />
<attr name="pivotY" />
<attr name="drawable" />
</declare-styleable>
属性使用:
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/图片 ID"
android:frameDuration="100"
android:framesCount="12"
android:pivotX="50%"
android:pivotY="50%" />
7. string:字符串
属性定义:
<declare-styleable name="MapView">
<attr name="apiKey" format="string" />
</declare-styleable>
属性使用:
<com.google.android.maps.MapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g" />
8. fraction:百分数
属性定义:
<declare-styleable name="RotateDrawable">
<attr name="visible" />
<attr name="fromDegrees" format="float" />
<attr name="toDegrees" format="float" />
<attr name="pivotX" format="fraction" />
<attr name="pivotY" format="fraction" />
<attr name="drawable" />
</declare-styleable>
属性使用:
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="5000"
android:fromDegrees="0"
android:interpolator="@anim/动画 ID"
android:pivotX="200%"
android:pivotY="300%"
android:repeatCount="infinite"
android:repeatMode="restart"
android:toDegrees="360" />
9. enum:枚举值
属性定义:
<declare-styleable name="名称">
<attr name="orientation">
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
</declare-styleable>
属性使用:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" />
10. flag:位或运算
属性定义:
<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>
属性使用:
<activity
android:name=".StyleAndThemeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateUnspecified | stateUnchanged | stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
注意
属性定义时可以指定多种类型值,如:
属性定义:
<declare-styleable name="名称">
<attr name="background" format="reference|color" />
</declare-styleable>
属性使用:
<ImageView
android:layout_width="42dip"
android:layout_height="42dip"
android:background="@drawable/图片 ID|#00FF00" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Java 反射机制
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论