一、style
1、style是针对窗体元素级别的,改变指定控件或者Layout的样式
2、style有继承,覆盖
3、style定义,在res/styles.xml中定义
Android系统的themes.xml和style.xml(位于系统源代码frameworks\base\core\res\res\values\)包含了很多系统定义好的style,建议在里面挑个合适的,然后再继承修改。
<?xml version="1.0" encoding="UTF-8"?> <resources> <style name="TextView"> <item name="android:textSize">18sp</item> <item name="android:textColor">#008</item> <item name="android:shadowColor">@android:color/black</item> <item name="android:shadowRadius">2.0</item> </style> <style name="EditText"> <item name="android:shadowColor">@android:color/black</item> <item name="android:shadowRadius">1.0</item> <item name="android:background">@android:drawable/btn_default</item> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> </style> <style name="Button"> <item name="android:background">@android:drawable/edit_text</item> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> </style> </resources>
二、theme
1、Theme是针对窗体级别的,改变窗体样式;
2、定义位置和方式与style一样,都在res/styles.xml文件中,也可以自己定义在res/theme.xml文件中,区别是theme的item的name数固定的,值可变
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme"> <!-- Window attributes --> <item name="windowBackground">@android:drawable/screen_background_dark</item> <item name="windowFrame">@null</item> <item name="windowNoTitle">false</item> <item name="windowFullscreen">false</item> <item name="windowIsFloating">false</item> <item name="windowContentOverlay">@android:drawable/title_bar_shadow</item> <item name="windowTitleStyle">@android:style/WindowTitle</item> <item name="windowTitleSize">25dip</item> <item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item> <item name="android:windowAnimationStyle">@android:style/Animation.Activity</item> </style> </resources>
使用,main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" style="@style/TextView" /> <EditText android:id="@+id/EditText01" android:layout_height="wrap_content" style="@style/EditText" android:layout_width="fill_parent" android:text="类似Button的EditText"></EditText> <EditText android:id="@+id/EditText02" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="普通的EditText"></EditText> <Button android:id="@+id/Button01" android:layout_height="wrap_content" style="@style/Button" android:layout_width="fill_parent" android:text="类似EditText的Button"></Button> </LinearLayout>