【问题标题】:Adding a button to the ActionBar with ActionBarSherlock使用 ActionBarSherlock 向 ActionBar 添加按钮
【发布时间】:2012-04-23 10:37:47
【问题描述】:

我一直在尝试向 SherlockActionBar 添加一个按钮,但无法正常工作。

这是我的代码:

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

这是我的menu.xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/save_button"
          android:title="i"
          android:showAsAction="always" />
</menu>

这不起作用,因为即使我按下菜单按钮,也没有任何显示。 还有其他方法吗?我有什么错误吗?

【问题讨论】:

    标签: android actionbarsherlock android-actionbar


    【解决方案1】:

    您正在使用 Android 的 Menu 和 MenuInflater,但应该使用 ActionBarSherlock 附带的类:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
       inflater.inflate(R.menu.menu, (com.actionbarsherlock.view.Menu) menu);
       return super.onCreateOptionsMenu(menu);
    }
    

    您现在似乎正在将两者混合在一起。确保只导入 com.actionbarsherlock.view.Menu 和 com.actionbarsherlock.view.MenuInflater,而不是其 Android 对应项。我建议您执行以下操作:

    import com.actionbarsherlock.view.Menu;
    import com.actionbarsherlock.view.MenuInflater;
    
    ...
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
           MenuInflater inflater = getSupportMenuInflater();
           inflater.inflate(R.menu.menu, menu);
           return super.onCreateOptionsMenu(menu);
        }
    

    【讨论】:

    • 这非常有效,但是,是否可以在应用程序中的所有活动和片段中使用按钮?
    • 是的。创建一个包含上述 onCreateOptionsMenu(...) 的基本活动。接下来在您希望 ActionBar 可见的活动中扩展此活动。
    【解决方案2】:

    我认为在 menu.xml 中。您的项目没有完全声明 android:showAsAction 属性。 您必须像这样声明它:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/save_button"
              android:title="i"
              android:showAsAction="always|withText" />
    </menu>
    

    由于您没有为项目指定任何图标,因此操作栏无法显示任何项目。默认情况下,图标比文本显示。

    【讨论】:

    • thanx!exaclty 是我在找! ps 删除空格(“always|withText”)
    • 同时使用接受的答案(通过 hanspeide)和这个答案,得到了一个带有图标的操作栏的最终结果。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多