Android 中自定义属性格式详解

发布于 2024-04-17 03:13:17 字数 6310 浏览 22 评论 0

在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
652 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文