Android attrs,style,theme关系

本文深入解析Android开发中Attrs、Style与Theme的概念与应用。Attrs定义控件属性,Style集合多个属性值,Theme则为样式集合加零散属性,三者共同构建UI设计的基石。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,attrs和style

多个属性attr 具体值的集合组成一个style 。

 

attrs是控件的基础属性,例如:宽,高,颜色,边框,对齐方向等等。attrs用于声明属性名称和属性值类型。

例如:

attrs.xml文件中声明所有的属性,各种控件,或者单独的。(属性只需要指定是什么类型就可以,引用类型,颜色类型,距离,整数等等)
<resources>
    <attr name="dialog_subtitle_style" format="reference" />
    <attr name="vkui_round_btn_text_color" format="color"/>
    <attr name="android:layout_width" format="dimension|enum">
        <enum name="match_parent" value="-1" />
        <enum name="wrap_content" value="-2" />
    </attr>
    <attr name="android:layout_marginBottom" format="dimension|reference" />

    <!--声明自己的属性名称-->
    <!--例如:在布局文件中可以直接使用
        Android系统提供的属性
        android:height="100dp"
        自定义的属性
        dialog_style:layout_gravity="left"
    -->
    <declare-styleable name="dialog_style">
        <attr name="layout_gravity" format="enum">
            <enum name="left" value="1" />
            <enum name="center" value="2" />
            <enum name="right" value="3" />
        </attr>
        <attr name="android:layout_height" format="dimension|enum">
            <enum name="match_parent" value="-1" />
            <enum name="wrap_content" value="-2" />
        </attr>
        <attr name="android:layout_width" format="dimension|enum">
            <enum name="match_parent" value="-1" />
            <enum name="wrap_content" value="-2" />
        </attr>

        <attr name="android:layout_marginLeft" format="dimension|reference" />
        <attr name="android:layout_marginRight" format="dimension|reference" />
        。。。
    </declare-styleable>

</resources>

style是控件中多个属性attrs的集合。style用于,集合多个具体的属性值。(属性已经需要具体赋值了)

<style name="common_dialog_action_style">
    <item name="android:textSize">16sp</item>
    <item name="android:minWidth">110dp</item>
    <item name="android:gravity">center</item>
    <item name="qmui_dialog_positive_action_text_color">@color/T1</item>
    <item name="qmui_dialog_negative_action_text_color">@color/T1</item>
    <item name="android:textColor">@color/T1</item>

</style>

二,style和theme

theme声明的方式和style一样,也使用<style>标签,只是theme是style样式集合和,一些零散的属性的集合。

例如:

<style name="BaseAppTheme" parent="QMUI.Compat.NoActionBar">
    <item name="qmui_bottom_sheet_list_item_padding_horizontal">16dp</item>
    <item name="qmui_bottom_sheet_list_item_icon_size">24dp</item>
    <item name="qmui_bottom_sheet_list_item_icon_margin_right">16dp</item>
    <item name="colorAccent">@color/common</item>
    <item name="colorPrimary">@color/color_white</item>
    <item name="colorPrimaryDark">#cccccc</item>
    <item name="android:windowBackground">@color/color_white</item>

    <!--**********************************************
    *             APP主要颜色赋值 qmui btn              *
    ***********************************************-->
    <item name="qmui_round_btn_text_size">@dimen/font_16</item>
    <item name="qmui_round_btn_border_width">1dp</item>
    <item name="qmui_round_btn_bg_color">@color/V4_Z2</item>
    <item name="qmui_round_btn_border_color">@color/V4_Z1</item>
    <item name="qmui_round_btn_text_color">@color/V4_Z1</item>

    <!-- button style-->
    <item name="QMUIButtonStyle">@style/QMUI.RoundButton</item>
</style>

 

最后:attrs,style,theme都可以全部定义在一个xml文件中。但是每个类型中的名称只能唯一。

颜色值,距离值等也可以放在一个文件中。

但是,还是推荐,分开写成几个文件中。如:attrs.xml,style.xml,theme.xml,colors.xml,demesion.xml等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值