Android中 Styles和Themes

本文详细介绍了Android开发中Style和Theme的概念与应用方法,包括如何自定义Style和Theme,以及如何在布局文件和Activity中使用它们。此外还列举了一些常用的样式属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 部分内容摘自: http://blog.youkuaiyun.com/woshishushangdezhu/article/details/4602597
1.什么是Style,什么是Theme?
 1) Style:是一个包含一种或者多种格式化属性的集合,我们可以将其作为一个单位用在布局XML单个元素当中。
 2) Theme:是一个包含一种或者多种格式化属性的集合,我们可以将其作为一个单位用在应用中所有的Activity当中或者应用中的某个Activity当 中。
2. 定义Styles和Themes资源
Styles和Themes都是资源,存放在res/values文件夹下。
对每一个Styles和Themes,给<style>元素增加一个全局唯一的名字,也可以选择增加一个父类属性。在后边我们可以用这个名字来应用风格,而父类属性标识了当前风格是继承于哪个风格。在<style>元素内部,申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。
1) 自定义一个style
 在res/values/sytles.xml中添加自定义的style:
<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>
    <style name="AppTheme" parent="AppBaseTheme">
    </style>
    <style name="EditTextStyle" parent="@android:style/Widget.Holo.EditText">
        <item name="android:imeOptions">flagNoExtractUi|flagNoFullscreen</item>
        <item name=”android:textSize”>18sp</item>
		<item name=”android:textColor”>#EC9237</item>
    </style>
</resources>
那如何应用这个style呢?
<!– 应用样式1的TextView –>
<EditText
style="@style/EditTextStyle"
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:gravity=”center_vertical|center_horizontal”
android:text=”moandroid”/>
上面这个EditText的样式,显示输入法的时候就不会全屏显示而挡住输入的内容。
2)自定义一个Theme
Theme依然在<style>元素里边申明,也是以同样的方式引用。不同的是通过在Android Manifest中定义的<application>和<activity>元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里。

定义Theme的一个例子

<?xml version=”1.0″ encoding=”UTF-8″?>
<resources>
<style name=”NewTheme” parent=”android:Theme.Black”>
<item name=”android:windowNoTitle”>true</item>
<item name=”android:textSize”>14sp</item>
<item name=”android:textColor”>#FFFF0000</item>
</style>
</resources>
  • @ 表明我们应用的资源是前边定义过的(或者在前一个项目中或者在Android 框架中)。
  • ?表明我们引用的资源的值在当前的主题当中定义过。

在程序中使用Theme的方法

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.NewTheme);
setContentView(R.layout.main);
}

在AndroidManifest.xml中应用Theme

  • 为了在当前所有的Activity当中使用Theme,可以打开AndroidManifest.xml 文件,编辑<application>标签,让其包含android:theme属性,值是一个主题的名字,例如:<application android:theme=”@style/NewTheme”>。
  • 如果只是想让程序当中的某个Activity拥有这个Theme,那么可以修改<activity>标签。Android中提供了几种内置的资源,有好几种Theme你可以切换而不用自己写。比如可以用对话框Theme来让你的Activity看起来像一个对话框。在manifest中定义,例如:<activity android:theme=”@android:style/Theme.Dialog”>
  • 如果喜欢一个Theme,但是想做一些轻微的改变,只需要将这个Theme添加为parent。Android SDK为我们提供了很多现成的Them。
3. 开发中常用的style属性
<style name="Theme.Dialog.Light" parent="@android:style/Theme.Dialog">
        <item name="android:buttonStyle">@style/Button.Light</item>
        <item name="android:checkboxStyle">@style/CheckBox.Light</item>
        <item name="android:gridViewStyle">@style/GridView.Light</item>
        <item name="android:listViewStyle">@style/ListView.Light</item>
        <item name="android:textViewStyle">@style/TextView.Light</item>
        <item name="android:spinnerStyle">@style/Spinner.Light</item>
        <item name="android:radioButtonStyle">@style/RadioButton.Light</item>
        <item name="android:editTextStyle">@style/EditText.Light</item>
        <item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextView.Light</item>
        <item name="android:progressBarStyle">@style/ProgressBar.Light</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem.Light</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:scrollbarThumbHorizontal">@drawable/scrollbar_horizontal</item>
        <item name="android:scrollbarThumbVertical">@drawable/scrollbar_vertical</item>
        <item name="android:progressBarStyleHorizontal">@style/ProgressBar.Horizontal.Light</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:backgroundDimEnabled">true</item> <!-- 定义灰色透明背景 -->
    </style>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值