【问题标题】:missing action bar in empty activity空活动中缺少操作栏
【发布时间】:2018-01-04 09:45:39
【问题描述】:

我想学习如何在 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>

【问题讨论】:

  • 您是否将活动扩展到AppcompatActivity
  • 发布您的清单
  • @SripadRaj 默认是扩展的! ` 公共类 MainActivity 扩展 AppCompatActivity`
  • 那么您是否已将Appcompat 库添加到您的项目中?如果没有,请添加它。将android:showAsAction="always" 更改为app:showAsAction
  • @sasikumar 我发布了!

标签: java android android-actionbar


【解决方案1】:

更改您的应用主题

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

进入

  android:theme="@style/AppTheme"

【讨论】:

  • 太棒了!解决了我的问题,但你能告诉我为什么我的应用程序设置为 android:theme="@style/Theme.AppCompat.Light.NoActionBar"?!
【解决方案2】:

改变你的主题:

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

到:

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

【讨论】:

    【解决方案3】:

    首先,您必须在 MainActivity.xml、相对布局内和 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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2015-08-07
      相关资源
      最近更新 更多