我正在尝试在顶部操作栏中创建一个注销菜单项。我执行了以下步骤:
1)res>右键单击>新> android资源目录>资源类型>菜单>确定
2)右键单击新创建的菜单文件夹并选择新的>档案> main_menu.xml
3)基于这些文档https://developer.android.com/guide/topics/resources/menu-resource.html,我在main_menu.xml文本视图中添加了以下xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
4)在main_menu.xml设计视图中,我将一个菜单项拖到菜单中。我给它一个id,一个标题和showAsAction总是设置。然后我返回到文本视图并注意到生成了以下内容:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Logout" android:id="@+id/@+id/logout" android:showAsAction="always"/>
</menu>
5)我修复了id并注意到showAsAction它给出了以下消息:
Should use app:showAsAction with appcompat library with xmlns:app="schemas.android.com/apk/res-auto"';
我运行了应用程序,菜单项从未显示过。
通过研究,我将xml更改为:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto">
<item android:id="@+id/action_settings" android:title="Logout"
android:orderInCategory="100" app:showAsAction="always"/>
</menu>
我甚至尝试将其添加到xml:
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"
但菜单项未显示在MainActivity屏幕上。
答案 0 :(得分:0)
你应该在onCreateOptionMenu活动方法中夸大菜单:getMenuInflater()。inflate(R.menu.main_menu,menu)
答案 1 :(得分:0)
这些也是该文章的有用说明:
工具栏已在Android 5.0(API 21)中引入。如果你想 使用早期Android版本的设备上的工具栏即可 使用appcompat-v7支持库提供的downport。
目标SDK版本低于API 11的应用程序使用 选项菜单,如果设备上有这样的按钮。选项 如果用户按下Option按钮,则显示菜单。工具栏 酒吧优于选项菜单,因为操作栏显然 可见,而选项菜单仅在请求时显示。
工具栏中的条目通常称为操作。虽然它是 可以通过代码在操作栏中创建条目,通常是这样 在XML资源文件中定义。 每个菜单定义都包含在res / menu文件夹中的单独文件中。 Android工具会自动创建引用 到R文件中的菜单项条目,以便菜单资源可以 访问。
MenuInflator类允许扩充XML中定义的操作 文件并将其添加到操作栏。可以访问MenuInflator 通过活动中的getMenuInflator()方法。
@Override public boolean onCreateOptionsMenu(菜单菜单){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu,menu);返回true; }如果选择了一个动作,则在onOptionsItemSelected()方法中 调用相应的活动。它接收所选的操作为 参数。
@Override public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){您可以更改的可见性 运行时的工具栏。以下代码演示了这一点。ActionBar actionBar = getActionBar(); actionBar.hide(); actionBar.show();