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

标签 android android-actionbar android-xml android-appcompat android-styles

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

这是我的主要 Activity 类文件:

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>

我从 list 文件调用:

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

enter image description here

在项目中,我有 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>

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

最佳答案

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

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

关于android - 如何让旧的自定义 ActionBar 出现在新的 SDK 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43469101/

相关文章:

java - 从大字符串中获取显示行

java - 创建像播放音乐一样的 Android Actionbar 菜单

android - 如何在 Android 3.0 及更高版本中更改 ActionBar 的触摸效果颜色

android - 如果您可以直接从 AttributeSet 中读取,为什么需要声明样式?

java - 如何在 Android 中使用 TabLayout 和 ViewPager2

android - 试图将 Intent 发送到其他应用程序 : error SecurityException: Permission Denial: starting Intent

android - 为什么我会收到 CircularDependencyException?

android - 每次按下菜单按钮时,菜单项都会不断添加

java - 如何隐藏 View 后面的 View

java - 如何在LayerList android的中心添加图像