如何让旧的自定义 ActionBar 出现在新的 SDK 上?

How to make old custom ActionBar appear on new SDK?

我将旧的 Android (4.4 Kitkat) 项目从 Eclipse 迁移到 Android Studio。 当我 运行 应用程序时,我不再有 ActionBar!

这是我的主要 Activity class 文件:

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" >

在我的项目中 options.xml,如您所见,它创建了操作栏的内容: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>

无论如何,如果我构建应用程序,我的 phone 上没有 ActionBar。我在使用 Eclipse ADT 构建应用程序时拥有它。我认为不同之处在于我之前使用的 SDK 旧版本。那么,如何让ActionBar再次出现那个自定义主题呢?

试试这个:

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

我认为你必须回到 Holo 主题:

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