AppBaseTheme在Android应用程序中做了什么

Anu*_*shi 7 android android-theme

我无法理解AppBaseTheme在Android中会发生什么.在styles.xml中,我有以下代码

<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="mycolor">
    <item name="android:background">@layout/header_gradient</item>
    <item name="android:padding">5dip</item>
</style>
<style name="myParentTheme" parent="android:Theme.Light">
    <item name="android:attr/windowTitleSize">40dip</item>
    <item name="android:attr/windowTitleBackgroundStyle">@style/mycolor</item>
</style>


<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
</style>
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中,当我使用android:theme ="@ style/myParentTheme"时,标题的颜色和大小设置为我想要设置的内容.但是文本字段的样式更改为旧的常规文本框.当我使用android:theme ="@ style/AppTheme"时,UI看起来非常像"Android-like",但我对标题的具体设置没有任何影响.删除parent ="AppBaseTheme"使AppTheme样式的行为与myParentTheme样式相同.

另外,当我在键入Style标签的name属性时执行Ctrl + Space时,为什么我看不到所有R.attr元素?

请帮忙.谢谢.

Com*_*are 16

如果您选择使用Eclipse新项目向导创建活动,Eclipse将为您定义AppThemeAppBaseTheme资源.AppBaseTheme通常有三种定义,res/values/,res/values-v11/,和res/values-v14/.AppTheme将继承自AppBaseTheme.

目的是让您将大部分特定于应用程序的样式信息放入其中AppTheme,而不是发明自己的主题(例如myParentTheme).AppBaseTheme主要是确保你从正确的OS提供的主题继承(例如,Theme.Lightvs. Theme.Holo.Lightvs. Theme.Holo.Light.DarkActionBar).AppBaseTheme如果您愿意,还可以根据需要添加特定于版本的样式信息.

AndroidManifest.xml当我用android:theme="@style/myParentTheme"标题的颜色和大小都设置为我想设置.但是文本字段的样式更改为旧的常规文本框.

那是因为你继承自Theme.Light使用原始(非全息)小部件集.

当我使用android:theme="@style/AppTheme"UI看起来非常"类似Android"但我对标题的具体设置没有任何影响.

那是因为您决定创建myParentTheme而不是将样式定义放入AppTheme.