操作栏不显示

Ash*_*man 32 android android-actionbar

我试图在我的应用程序中实现一个操作栏.

menu.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/itemAdd"
        android:showAsAction="ifRoom|withText"
        android:title="ADD">
    </item>
    <item
        android:id="@+id/itemRefresh"
        android:showAsAction="ifRoom|withText"
        android:title="REFRESH">
    </item>
    <item
        android:id="@+id/itemHelp"
        android:title="HELP">
    </item>

</menu>
Run Code Online (Sandbox Code Playgroud)

并创建菜单

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但即使minSdkVersion是11,它也没有显示动作栏.这是什么原因?

Sat*_*esh 85

在androidManifest文件中删除动作栏活动的主题.现在它会起作用......

<application
    android:allowBackup="true"
    android:icon="@drawable/tasktodo"
    android:label="@string/app_name"
    >
Run Code Online (Sandbox Code Playgroud)

不要在应用程序清单文件中添加任何主题.如果您添加了一个,请删除并尝试运行它...

  • 好的.谢谢.从清单中删除主题修复了我的问题 (2认同)

FD_*_*FD_ 5

您必须将Activity的样式设置为,Theme.Holo或将其样式之一设置为显示ActionBar。如果要保持向后兼容,请在Activity的onCreate中调用setTheme:

setTheme(android.R.style.Theme_Holo);
Run Code Online (Sandbox Code Playgroud)


Gle*_*ech 5

具有这样的清单的应用程序

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.Actionbartest"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" />
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MyActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

Menu.xml 像这样

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
            android:id="@+id/itemAdd"
            android:showAsAction="ifRoom|withText"
            android:title="ADD">
    </item>
    <item
            android:id="@+id/itemRefresh"
            android:showAsAction="ifRoom|withText"
            android:title="REFRESH">
    </item>
    <item
            android:id="@+id/itemHelp"
            android:title="HELP">
    </item>
</menu>
Run Code Online (Sandbox Code Playgroud)

和这样的活动

package com.example.Actionbartest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来像这样。

在此输入图像描述

您确定您的手机或模拟器运行的是 Android 3.0 或更高版本吗?如果没有,您最终将得到屏幕截图。

要在旧设备上启用 Actionbar,您应该使用 AppCompat/support 库 ( https://developer.android.com/tools/support-library/features.html )


siv*_*ivi 5

在类中将Activity更改为AppCompatActivity。如果您想快速添加它,那应该是最简单的。我将为Android操作系统新手添加代码:

public class YourActivity extends Activity 
Run Code Online (Sandbox Code Playgroud)

进入

public class YourActivity extends AppCompatActivity
Run Code Online (Sandbox Code Playgroud)