2012-12-21 26 views
0

我有几个应用程序是使用Android 1.6和之后创建的。问题是,当我在ICS等最近的Android(设备或模拟器)上运行这些应用程序时,我没有Holo主题。前ICS和后ICS之间的区别Holo主题相关

我知道我可以找到很多关于如何指定主题的线程,但是当我现在创建一个新的应用程序时,我没有任何代码行的新主题。

我不想在所有Android版本上都有ICS主题,只是ICS上的ICS主题,就像ICS上的全新全息按钮风格和旧版灰色风格一样。现在,我只是对所有版本都有灰色按钮。

我可以创建新的空白项目并将所有文件复制到它中,但必须有一个隐藏的值来指明这一点。

在我的表现,我有:

<uses-sdk android:minSdkVersion="3" /> 
<uses-sdk android:targetSdkVersion="14" /> 

什么可以新旧创建的项目之间的区别?

回答

4

我的理解是,您希望您的应用根据API版本在传统(经典)主题和新Holo主题之间切换。

首先,在您的valuesres/values)文件夹中创建一个新的xml。称它为styles.xml。它应该包含这些行:

<resources> 
<style name="AppTheme" parent="@android:style/Theme.Black"/> 
</resources> 

然后使res一个新的文件夹,名为values-v11。在这个新文件夹中创建另一个新的XML。此外它命名为styles.xml这个文件应该包含这些行:

<resources> 
<style name="AppTheme" parent="@android:style/Theme.Holo"/> 
</resources> 

然后在你的AndroidManifest.xmlApplication节点应该包含这一行:

android:theme="@style/AppTheme" 

现在与蜂窝或更高版本的设备,你得到的全息主题对于其他一切,你会得到古典主题。您可以轻松地尝试以满足您的需求 - 这是基于API版本在主题之间切换的一般方法。

+0

我刚刚检查了一个最近在ICS上显示Holo主题的应用程序,我没有指定它应该使用什么主题的styles.xml。我根本没有style.xml。必须有另一个选项来发现。 – Kamax

+0

这可能是因为如果你没有在AndroidManifest中指定任何**主题,它默认为默认的设备,在Honeycomb之前是'Theme.black',在Honeycomb之后是'Theme.holo'。 –

+0

哦yesss,我在manifest-> activity标记行(android:theme =“@ android:style/Theme.NoTitleBar”)。我永远不会认为它会改变标题栏中的其他内容。 – Kamax