【问题标题】:how to force ActionBar to display ALL items如何强制 ActionBar 显示所有项目
【发布时间】:2015-06-29 14:25:57
【问题描述】:

我在这里尝试了一些建议,但没有人奏效,

这是问题所在,箭头指示我想要它们的位置

操作栏只显示 2 个图标

另一个在三点菜单中

我的 custom_menu.xml

<item
    android:id="@+id/btnBold"
    android:icon="@drawable/text_bold"
    app:showAsAction="always"
    android:onClick="onContextualMenuItemClicked"
    android:title="Teste1">
</item>

    <item
        android:id="@+id/btnItalic"
        android:icon="@drawable/text_italic"
        app:showAsAction="always"
        android:onClick="onContextualMenuItemClicked"
        android:title="teste2">
    </item>

    <item
        android:id="@+id/btnUnderline"
        android:icon="@drawable/text_underline"
        app:showAsAction="always"
        android:onClick="onContextualMenuItemClicked"
        android:title="teste3">
    </item>

    <item
        android:id="@+id/btnStrike"
        android:icon="@drawable/text_strike"
        app:showAsAction="always"
        android:onClick="onContextualMenuItemClicked"
        android:title="teste2">
    </item>

    <item
        android:id="@+id/btnForeground"
        android:icon="@drawable/text_foreground"
        app:showAsAction="always"
        android:onClick="onContextualMenuItemClicked"
        android:title="teste2">
    </item>

    <item
        android:id="@+id/btnBackground"
        android:icon="@drawable/text_background"
        app:showAsAction="always"
        android:onClick="onContextualMenuItemClicked"
        android:title="teste2">
    </item>

</menu>

以及 MainActivity 中的代码

private ActionMode mActionMode = null;

    @Override
    public void onActionModeStarted(ActionMode mode) {
        if (mActionMode == null) {
            mActionMode = mode;
            Menu menu = mode.getMenu();
            // Remove the default menu items (select all, copy, paste, search)
            menu.clear();

            // If you want to keep any of the defaults,
            // remove the items you don't want individually:
            // menu.removeItem(android.R.id.[id_of_item_to_remove])

            // Inflate your own menu items
            mode.getMenuInflater().inflate(R.menu.my_custom_menu, menu);
        }

        super.onActionModeStarted(mode);
    }

    // This method is what you should set as your item's onClick
    // <item android:onClick="onContextualMenuItemClicked" />
    public void onContextualMenuItemClicked(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.btnBold:
                // do some stuff
                break;
            case R.id.btnItalic:
                // do some different stuff
                break;
            default:
                // ...
                break;
        }

        // This will likely always be true, but check it anyway, just in case
        if (mActionMode != null) {
            //mActionMode.finish();
        }
    }

    @Override
    public void onActionModeFinished(ActionMode mode) {
        mActionMode = null;
        super.onActionModeFinished(mode);
    }

【问题讨论】:

  • 当它们不能全部显示在屏幕上时会发生什么?
  • 这种情况下可以缩小,但是左边空间很大,为什么要隐藏?
  • actionbar 不收缩项目,你想做的事情是行不通的
  • shrink 只是一种说法,所以我必须改变我的方法 =/,你知道如何在所选项目上方制作一个弹出对话框吗?我的意思是,就像当你有一个 EditText/TExtview 并选择文本时,会出现一种气泡,也许这可以满足我的需要(在这里抱歉这个问题)
  • 嗨@user2582318,你找到出路了吗?

标签: android xml user-interface


【解决方案1】:

你已经尝试过这个问题的答案了吗?

Android 4.3 menu item showAsAction="always" ignored

基本上,他说的是您一定缺少命名空间。 正确的做法是:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:[yourapp]="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_add_size"
    android:title="@string/menu_add_item"
    android:orderInCategory="10"
    [yourapp]:showAsAction="always"
    android:icon="@android:drawable/ic_menu_add" />
</menu>

我遇到了这个问题,并通过更改特定的命名空间来解决它。希望你也可以通过这样做来解决。

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多