2015-01-16 33 views
3

我正在做developer.android.com的介紹教程,並且希望看到我的應用程序使用Holo主題。不幸的是,Android工作室不斷地將應用程序改回到Theme.AppCompat.Light.DarkActionBar主題。該應用程序有兩個活動。第一個有一個EditText和一個Button,第二個活動只顯示一個TextView。在添加第二個活動之前,我可以通過打開第一個活動的.xml,單擊「預覽」,然後從預覽窗格的頂部選擇Holo主題,將Holo主題應用於第一個活動。這工作正常。然後我創建了第二個活動,並做了同樣的事情,但現在當我運行該應用程序時,它不使用Holo主題。當我想使用Holo時,Android工作室交換appcompat

該清單:

<application 
    ... 
    android:theme="@style/AppTheme" > 

和樣式文件:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

我試圖改變該行<style name="android:Theme.Holo">,但會要求應用程序當我運行它崩潰。

本教程似乎是使用Android Studio的默認Hello World活動默認爲Holo的假設編寫的,但似乎並非如此。我不認爲這是因爲我試圖支持的版本:

android { 
compileSdkVersion 21 
buildToolsVersion "21.1.2" 

defaultConfig { 
    applicationId "com.example.me.myfirstapp" 
    minSdkVersion 16 
    targetSdkVersion 21 
    versionCode 1 
    versionName "1.0" 
} 

所以我的問題是雙重的。我如何讓應用程序使用Holo主題運行,以及如何每次在項目中創建新活動時如何讓Android Studio停止切換回AppCompat?

+1

您可以使用holo,但只能在API> = 14。您的活動必須擴展Activity而不是ActionBarActivity。 –

+0

@EugenPechanec自minSdkVersion是16,我不是很好用Holo嗎?我不明白你對API 14的評論。另外,你能解釋爲什麼我需要擴展Activity而不是ActionBarActivity?當我轉到Android Studio中的新建>活動>空白活動時,它會選擇ActionBarActivity,如果我真的必須直接擴展活動,是否有方法來更改該默認行爲? –

+1

您可以嘗試從依賴關係中刪除appcompat-v7,然後創建一個新的活動。但我懷疑它會像現在一樣結束。你最好自己創建空的Java類(最後編寫extends子句)和xml佈局,imho。 –

回答

1

在Eugen的建議之後,我改變了我的類,所以它們擴展了Activity而不是ActionBarActivity。

0

你得到的錯誤信息是什麼?我的猜測是Activity中的例子可能是 ActionBarActivity類。當延長上述類,你必須使用一個AppCompat主題(或後代),否則應用程序會崩潰,你會得到一個錯誤這樣的:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myApp/com.example.myApp.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 

這是個壞消息。好消息是Theme.Holo,你試圖用在你的例子中,在美學上與Theme.AppCompat相同。所以,簡單地改變:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

到:

<style name="AppTheme" parent="Theme.AppCompat"> 

它會看起來好像你已經實現了Theme.Holo主題。

+2

AppCompat與Holo僅與appcompat-v7 20.0.x完全相同。自21.0.x以來,它使用Material主題。 –

+0

是否有任何理由我不想擴展Activity而不是擴展ActionBarActivity?我的minSdkVersion是16,那麼是否有擴展Activity而不是ActionBarActivity的功能? –

+0

我不太明白爲什麼用Holo以前那麼簡單,現在很難。這很難複製,因爲這個AppCompat庫已被添加。不需要時,情況變得複雜。 – Tastybrownies

0

我在android studio的項目中成功使用了holo主題。 方法如下:

  1. 在應用gradle這個,讓minSdk,compilesdk和targetsdkversion相同(爲了防止後備行爲提示程序兼容性庫的必要性)

  2. 刪除的依賴程序兼容性LIB進入部分在應用程序gradle文件中。

  3. 現在,您可以在應用程序的styles.xml中簡單地使用android:Theme.Holo.Light。

+0

另外不要忘記用Activity來替換ActionBarActivity。 – jzyamateur