Android API 19:操作栏不显示 menu_main.xml

Posted

技术标签:

【中文标题】Android API 19:操作栏不显示 menu_main.xml【英文标题】:Android API 19: Action Bar not displaying menu_main.xml 【发布时间】:2017-02-28 06:23:51 【问题描述】:

manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="edu.gatech.seclass.glm">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:supportsRtl="true">
        <activity
            android:name="edu.gatech.seclass.glm.Activity.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:orderInCategory="101"
        android:icon="@android:color/background_light"
        android:id="@+id/select_list"
        android:title="Select List"
        app:showAsAction="always"/>
</menu>

MainActivity.java

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ///...
    

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        switch(item.getItemId()) 
            case R.id.select_list:
                return(true);

        
        return(super.onOptionsItemSelected(item));
    

    //...

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_
    android:layout_
    tools:context="edu.gatech.seclass.glm.Activity.MainActivity"
    android:weightSum="1">

    <ListView
        android:layout_
        android:layout_
        android:id="@+id/groceryListContainer"
        android:layout_weight="0.66" />

    <Button
        android:text="@string/add_list"
        android:layout_
        android:layout_
        android:id="@+id/addList"
        android:onClick="addList"
        android:layout_weight="0.26" />

</LinearLayout>

我读到的所有内容都让我相信这应该可以工作,但我得到了一个只显示应用程序名称的操作栏。我已经确认 onCreateOptionMenu 实际上也被击中。想法?

【问题讨论】:

您确定要添加操作栏吗?关于操作栏的一些信息:developer.android.com/design/patterns/actionbar.html 我以为我和onCreateOptionsMenu 在一起。那将在哪里完成? “但我得到一个只显示应用程序名称的操作栏” - 问题应该是操作栏没有显示您的菜单吗? @MarkKeen 是的。更新编辑 尝试去掉超类的调用,去掉这一行->super.onCreateOptionsMenu(menu); 【参考方案1】:

尝试在返回之前在 onCreateOptionsMenu 中添加此代码。

ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);

【讨论】:

使用的主题已经设置了标题,并显示。问题是菜单没有膨胀/显示。 在此活动的创建方法上,请执行此操作。 getSupportActionBar().setTitle("一些标题");【参考方案2】:

您实际上并没有在 onCreate 方法中设置 action bar (): 在 Android 5.0 (API 21) 上,它是 ToolBar:

    Toolbar tb = (Toolbar) findViewById(R.id.toolbar);
    setActionBar(tb);

请看样片:

http://www.vogella.com/tutorials/AndroidActionBar/article.html https://developer.android.com/reference/android/app/ActionBar.html

这里是 ToolBar 和 ActionBar 的区别:

What is the difference between Action Bar and newly introduced Toolbar?

【讨论】:

虽然活动 XML 中没有工具栏 这是 api 级别 19

以上是关于Android API 19:操作栏不显示 menu_main.xml的主要内容,如果未能解决你的问题,请参考以下文章

muitable操作栏不显示

Android 将App的内容延伸到状态栏/导航栏

导航栏不显示

IOS Swift CNContactViewController 导航栏不显示 UINavigation 控制器

当我在 19 API 中打开我的图片库时,没有看到画廊,但在 23API 中它在 android studio 中显示了画廊?

react-native 页面使用WebView布满整个页面,导航栏不显示问题