我尝试在我的应用程序中实现操作栏。
菜单.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,它也不显示操作栏。是什么原因?
删除操作栏活动的主题 在 androidManifest 文件中。现在它可以工作了...
<application
android:allowBackup="true"
android:icon="@drawable/tasktodo"
android:label="@string/app_name"
>
请勿在应用程序清单文件中添加任何主题。如果您添加了一个,请删除并尝试运行它...
将班级中的 Activity 更改为 AppCompatActivity。如果你想快速添加它,这应该是最简单的。我将为刚接触 Android 操作系统的人添加代码:
public class YourActivity extends Activity
进入
public class YourActivity extends AppCompatActivity
您必须将 Activity 的样式设置为
Theme.Holo
或其变体之一,ActionBar 才能显示。如果你想保持向后兼容性,请在 Activity 的 onCreate 中调用 setTheme :
setTheme(android.R.style.Theme_Holo);
具有这样的清单的应用程序
<?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 或更高版本吗?如果没有,您最终将得到屏幕截图。
要在旧设备上启用操作栏,您应该使用 AppCompat/support 库 (https://developer.android.com/tools/support-library/features.html)
android:allowBackup="true"
android:icon="@drawable/ic2"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
这有效。把它放进你的
我导入
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'
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" ... >
<application android:icon="@drawable/icon" android:label="@string/app_name">
<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>
<!-- Put the RTA label here ... -->
<meta-data android:name="RTA" android:value="RTA-5042-1996-1400-1577-RTA" />
</activity>
</application>
</manifest>
您可以尝试在 res>values>themes.xml 中更改主题
将父级更改为
Theme.AppCompat.Light.DarkActionBar
<!-- Base application theme. -->
<style name="Base.Theme.Android_Test_2_1" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
这个对我有用