1.style
一般是把多种属性(item)封装成一个类型(style),方便复用
比如,在style.xml里看到了
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:textColorPrimary">@color/primary_text_material_light</item> </style>
在AppTheme定义了整个应用的主题,在AndroidManifest中得到调用:
<application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
在style里定义各种属性的好处是
(1)可以继承父类,并且根据自身需要添加或修改,从而实现多种属性
(2)简化调用处表达,把具体属性定义统一放到一个文件里(style.xml)方便后期维护
比如在Toolbar控件中,调用了popupTheme
<android.support.v7.widget.Toolbar android:id="@+id/toolbar_activity_main" android:background="@color/colorPrimary" app:titleTextColor="@android:color/primary_text_dark" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/AppTheme.PopupMenu" />
在style里,再来定义这个popupTheme的具体属性:
<style name="AppTheme.PopupMenu" parent="Base.Widget.AppCompat.Light.PopupMenu"> <item name="overlapAnchor">false</item> <item name="android:dropDownWidth">wrap_content</item> <item name="android:paddingRight">5dp</item> <item name="android:dropDownVerticalOffset">28dp</item> <item name="android:dropDownHorizontalOffset">0dip</item> </style>