在xml文件中,当多个控件需要设置相同的属性设置时,可以使用style来避免重复的代码,利于代码的维护:
Style属性
res/values/styles.xml
<resource> <style name="LabelText" parent="android:TextAppearance.Large"> <item name="android:textStyle">bold</item> <item name="android:textSize">15dp</item> </style> <style name="FormButton" parent="android:Widget.Button"> <item name="android:minWidth">@dimen/buttonWidth</item> <item name="android:background">@drawable/bg_btn</item> <item name="android:textColor=">@color/red</item> </style> <style name="FormRadioButton" parent="android:Widget.CompoundButton.RadioButton"> <item name="android:minHeight">25dip</item> <item name="android:button">@null</item> <item name="android:background">@drawable/bg_radio</item> <item name="android:gravity">center</item> </style> <style name="FormCheckButton" parent="android:Widget.CompoundButton.CheckBox"> <item name="android:mingWidth">23dp</item> <item name="android:minHeight">23dp</item> <item name="android:button">@null</item> <item name="android:gravity">center</item> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/red</item> </style> </resource>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/FormButton" /> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" style="@style/LabelText" abdroid:textAppearance="@style/LabelText" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/FormRadioButton" />
控件可以使用style引用自定义的style属性,但TextView有例外,它可以接受一个特殊的属性android:textAppearance,此属性获取一个样式引用,并且仅应用在文本格式化属性(大小,颜色,样式等),同样TextView依然可以通过style应用单独的样式属性。
Theme主题
在AndroidManifest.xml文件中对Application和Activity设置Theme(主题):
<?xml version="1.0" encoding="UTF-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" ....> <application android:theme="APPLICATION_THEME_NAME" ....> <activity android:theme="ACTIVITY_THEME_NAME" ....> <intent-filter> .... </intent-filter> </activity> </application> </manifest>
(2)自定义主题
在res/values/styles.xml文件中:
<resource> <style name="BaseAppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <!-- Action Bar的背景颜色--> <item name="colorPrimary">@color/red</item> <!-- 状态栏的颜色--> <item name="colorPrimaryDark">@color/pRed</item> <!-- 所有拥有焦点/激活状态的控件的颜色--> <item name="colorAccent">@color/green</item> <!-- 未选中控件的颜色--> <item name="colorControlNormal">@color/mYellow</item> <!-- 已激活的空间的颜色--> <item name="colorControlActivated">@color/mGray</item> </style> </resource>
<activity android:name=".MainActivity" android:theme="@style/BaseAppTheme"> ........ </activity>
<style name="StartAppTheme" parent="AppBaseTheme"> <item name="android:windowNoTitle">true</item> <!-- bg_start.png为启动图片--> <item name="android:windowBackground">@drawable/bg_start</item> </style>
<activity android:name=".WelComeActivity" android:screenOrientation="portrait" android:theme="@style/StartAppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>