我尝试在我的应用程序中实现操作栏。
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;
}
但即使minSdkVersion
为11,它也不显示操作栏。原因是什么?
答案 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;
}
}
看起来像这样。
您确定自己的手机或模拟器是否运行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'
}