【问题标题】:Action buttons move to overflow menu (ActionBar)操作按钮移动到溢出菜单 (ActionBar)
【发布时间】:2016-11-27 07:37:53
【问题描述】:

我的 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>

主活动

@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

【问题讨论】:

    标签: android css android-actionbar


    【解决方案1】:

    根据我对您的问题的理解,您最初试图更改未成功的 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>
        

    附:我不明白您为什么要从代码中删除菜单项。 IE。

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

    【讨论】:

    • 感谢您的回答!我尝试了两种方法并且都有效。我决定使用第一个。
    • 附言。只有在我的 ListViewActivity 中选择了添加新注释选项时,我才会删除此菜单项。 (备注为空时)
    • @NikolaiBoiko 好的。很高兴能帮到你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多