一,attrs和style

Android attrs,style,theme关系

多个属性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

Android attrs,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等

相关文章:

  • 2021-12-11
  • 2021-05-16
  • 2022-12-23
  • 2021-08-13
  • 2021-08-14
  • 2021-09-16
  • 2021-09-05
  • 2021-06-15
猜你喜欢
  • 2022-12-23
  • 2022-01-21
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
  • 2022-01-14
  • 2022-12-23
相关资源
相似解决方案