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

我无法理解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>

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

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

请帮忙.谢谢.

解决方法

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

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

In AndroidManifest.xml when I use android:theme="@style/myParentTheme" the color and size of the title are set to what I want to set. But the style for text fields changes to the old regular textBoxes.

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

When I use android:theme="@style/AppTheme" the UI looks very “Android-like” but my specific settings to the title do not have any effect.

那是因为你决定创建myParentTheme而不是将你的风格定义放到AppTheme中.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...