2012-12-21 56 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