空活动中缺少操作栏

时间:2017-07-28 10:48:38

标签: java android android-actionbar

我想学习如何在android中使用工具栏并尝试在操作栏中添加菜单但是当我运行我的预览启动项目时,注意到现在缺少默认的空活动菜单栏!我不知道为什么会这样。

这是我的MainActivity.xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="ir.cupcode.artin.contact.MainActivity">
<ListView
    android:id="@+id/list"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

</RelativeLayout>

我在MainActivity.java中有这个菜单栏的代码块:

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menubar, menu);
    return true;
}

这是我的menubar.xml代码

 <?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/action_refresh"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:icon="@drawable/ic_action_test"
    android:title="Refresh"/>
<item
    android:id="@+id/action_settings"
    android:title="Settings">
</item>

此外,我使用android:showAsAction="always"时出现错误,该错误表明应该使用app:showAsAction和appcombat库

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_appicon2"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity>
    </application>

3 个答案:

答案 0 :(得分:2)

更改您的应用主题

$

$

答案 1 :(得分:0)

更改主题:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

到:

android:theme="@style/Theme.AppCompat.Light.DarkActionBar"

答案 2 :(得分:0)

首先,您必须在MainActivity.xml中,在Relative Layout内和ListView上添加工具栏。您可以为其创建一个新文件,例如将其命名为“Toolbar.xml”并创建如下内容:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="Main Activity"/>

然后将其包含在您的MainActivity.xml中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="ir.cupcode.artin.contact.MainActivity">

<include layout="@layout/toolbar" id="@+id/toolbar">

<ListView
    android:id="@+id/list"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>

</RelativeLayout>

然后,您必须首先在应用程序中实例化工具栏。像这样:

yourToolbar = (Toolbar) findViewById(R.id.yourToolbar);
setSupportActionbar(yourToolbar);

您还可以查看这些论坛。

Toolbar.inflateMenu seems to do nothing

How to set menu to Toolbar in Android

希望这有帮助!