操作按钮移动到溢出菜单(ActionBar)

时间:2015-04-01 18:42:40

标签: android css android-actionbar

我的ActionBar有2个操作按钮,当我试图更改ActionBar上的徽标时,它没有显示。我找到了解决方案:在我的Mainactivity类中,我将ActionBarActivity(默认显示)更改为Activity。然后在manifest.xml中我从

更改主题
name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

徽标出现,但是2个动作按钮移动到溢出菜单。问题是:如何移动此操作按钮?

我的menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item android:id="@+id/action_share"
        android:title="@string/action_share"
        android:icon="@drawable/ic_action_share"
        android:orderInCategory="110"
        app:showAsAction="always" />
    <item android:id="@+id/deleteNote"
        android:title="@string/delete"
        android:orderInCategory="111"
        android:icon="@drawable/ic_action_delete"
        app:showAsAction="always" />
</menu>

MainActivity

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        if (isAddingNote)
        {
            menu.removeItem(R.id.deleteNote);
            menu.removeItem(R.id.action_share);
        }
        return true;

在这个论坛上,我发现了两篇贴心的帖子,但它对我没有帮助。 Action buttons doesn't show up on Action Bar?Actionbar not shown with AppCompat

1 个答案:

答案 0 :(得分:0)

根据我对你的问题的理解,你最初试图改变你没有成功的actionBar的图标,并最终得到其他错误。

让我告诉你,你的menu_main.xml代码完美无缺,没有任何错误。

有两种可能的解决方案,这取决于您的要求。

  1. 如果您正在开发具有材料设计支持的应用程序,即使用Appcompat,请使用以下答案。

    • 再次将android:Theme.Holo.Light.DarkActionBar更改为Theme.AppCompat.Light.DarkActionBar

    • 再次将extends Activity更改为extends ActionBarActivity

    • 将此代码写入您的java文件以更改操作栏的徽标。

      ActionBar actionBar = getSupportActionBar();
      actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
      actionBar.setIcon(R.drawable.YourLogo);`
      

    1. 如果您想使用Holo主题实现您的应用,请使用以下答案。

      • 首先,根据您使用的IDE,从项目中删除Appcompat lib。
      • 让您的活动为extends Activity
      • 让您的主题为android:Theme.Holo.Light.DarkActionBar
      • 将TargetSDK更改为21以下。将编译版本更改为21以下。
      • 替换你的main_menu.xml

        <menu xmlns:android="http://schemas.android.com/apk/res/android">
                    <item android:id="@+id/action_share"
                          android:title="share"
                          android:orderInCategory="110"
                          android:showAsAction="always"
                          android:icon="@drawable/ic_action_share" />
                    <item android:id="@+id/deleteNote"
                          android:title="delete"
                          android:orderInCategory="111"
                          android:showAsAction="always"
                          android:icon="@drawable/ic_action_delete" />
          </menu>
        
    2. P.S。我不明白为什么你从代码中删除菜单项。 即

          if (isAddingNote)
          {
              menu.removeItem(R.id.deleteNote);
              menu.removeItem(R.id.action_share);
          }