操作栏不显示

时间:2013-07-29 09:05:23

标签: 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>

创建菜单

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

enter image description here

但即使minSdkVersion为11,它也不显示操作栏。原因是什么?

6 个答案:

答案 0 :(得分:81)

  

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

<application
    android:allowBackup="true"
    android:icon="@drawable/tasktodo"
    android:label="@string/app_name"
    >

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

答案 1 :(得分:4)

您必须将活动的样式设置为Theme.Holo或其中一个变体,以显示ActionBar。如果您想保持向后兼容性,请在您的活动的onCreate中调用setTheme:

setTheme(android.R.style.Theme_Holo);

答案 2 :(得分:4)

具有此类清单的应用程序

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

像这样的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>

和这样的活动

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;
    }
}

看起来像这样。

enter image description here

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

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

答案 3 :(得分:3)

将活动更改为班级中的AppCompatActivity。如果你想快速添加它,这应该是最简单的..我将为Android操作系统新手添加代码:

public class YourActivity extends Activity 

public class YourActivity extends AppCompatActivity

答案 4 :(得分:2)

    android:allowBackup="true"
    android:icon="@drawable/ic2"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 
这是有效的。把它放在你的

答案 5 :(得分:1)

我导入import android.support.v7.app.AppCompatActivity;

然后编辑为public class MainActivity extends AppCompatActivity

添加到依赖项

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.0.0'
}