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)您的答案添加一个解释,并指出适用的限制和假设。 –