1

我將我的舊Android(4.4 Kitkat)項目從Eclipse遷移到Android Studio。 當我運行應用程序時,我再也沒有ActionBar了!如何使舊的自定義ActionBar出現在新的SDK上?

這是我的主要活動類文件:

public class Main extends Activity { 
    ... 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ... 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options, menu); 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     Intent intent; 

     switch (item.getItemId()) { 

      case R.id.Open: 
       intent = new Intent(this, Open.class); 
       startActivity(intent); 
       return true; 

     case R.id.Email; 
       intent = new Intent(this, Email.class); 
       startActivity(intent); 
       return true; 

      case R.id.Compartir: 
       intent = new Intent(this, Compartir.class); 
       startActivity(intent); 
       return true; 

      case R.id.About: 
       intent = new Intent(this, About.class); 
       startActivity(intent); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
} 

這裏是我的styles.xml文件:

<resources> 
     <style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style> 

    <style name="AppTheme" parent="AppBaseTheme"> 
      <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
     </style> 

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.Light.ActionButton.Overflow"> 
     <item name="android:src">@drawable/ic_action_expand</item> 
     <item name="android:background">?android:attr/actionBarItemBackground</item> 
     <item name="android:contentDescription">"Lala"</item> 
    </style> 
</resources> 

,我從清單文件中稱:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

enter image description here

在這個項目中,我有options.xml,正如你所看到的,它創建了Action Bar的內容:1按鈕+選項按鈕,它是一個帶有3個按鈕的下拉菜單。

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:id="@+id/Open" 
     android:title="@string/option_open" 
     android:icon="@drawable/ic_action_open" 
     android:showAsAction="ifRoom" />  

    <item android:id="@+id/Email" 
     android:title="@string/option_email" 
     android:icon="@drawable/ic_action_person" 
     android:showAsAction="never" /> 

    <item android:id="@+id/Compartir" 
     android:title="@string/option_compartir" 
     android:showAsAction="never" /> 

    <item android:id="@+id/About" 
     android:title="@string/option_about" 
     android:showAsAction="never" /> 
</menu> 

無論如何,如果我構建應用程序,我的手機上沒有任何ActionBar。當我使用Eclipse ADT構建應用程序時,我使用了它。我認爲不同的是之前使用的SDK舊版本。那麼,如何讓ActionBar再次出現這個自定義主題?

+0

你能展示它以前? – azizbekian

+0

我在問題中附加了一張圖片。你能看見它嗎? – smartmouse

回答

2

我認爲你必須回去霍洛主題:

<style name="AppBaseTheme" parent="android:Theme.Holo.Light"> 
+0

它的工作!非常感謝!你能告訴我爲什麼我需要做這個改變嗎?你能提供更多信息嗎? – smartmouse

+1

你在某種程度上依賴於舊的風格,但我不知道爲什麼動作欄不會在你的情況下顯示新的風格,因爲通常它應該有。這意味着你有一些邏輯,干擾顯示新的操作欄。基於這麼多的代碼,不能提供更深入的信息,抱歉。 – azizbekian

0

試試這個:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
+0

我試着添加'.DarkActionBar',但沒有改變。 – smartmouse

+1

雖然這段代碼可能會回答這個問題,但提供關於_how_和/或_why_的附加[上下文](https://meta.stackexchange.com/q/114762)可以解決問題,這樣可以提高答案的長期價值。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請[編輯](http://stackoverflow.com/posts/43469294/edit)您的答案添加一個解釋,並指出適用的限制和假設。 –