一,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等