操作栏中未显示菜单图标 - Android

时间:2014-01-31 04:02:49

标签: android menu menuitem

名为“action_settings”的菜单项显示在我的Nexus 5上,但没有显示我在XML中指定的齿轮图标,带有我未指定的android选项图标。它在Galaxy S2上根本不显示。任何人都知道为什么会发生这种奇怪的行为?我的其余菜单按预期显示。感谢。

编辑这可能是因为它不合适,因为当我点击电话菜单按钮时,它会直接进入我在action_settings菜单项中的2个复选框。但仍有一半的动作栏可以自由使用:/

编辑我的Nexus 5上显示的图标称为“溢出”图标。 3个垂直方块。也许暗示了太多的操作栏图标。

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

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();

        switch (itemId) {
            case R.id.menu_femaleHat :  addClothes(R.id.menu_femaleHat);
                     break;
            case R.id.menu_femalePants:  addClothes(R.id.menu_femalePants);
                     break;
            case R.id.menu_femaleTop:  addClothes(R.id.menu_femaleTop);
                     break;
            case R.id.menu_maleHat:  addClothes(R.id.menu_maleHat);
                     break;
            case R.id.menu_malePants:  addClothes(R.id.menu_malePants);
                     break;
            case R.id.menu_maleTop:  addClothes(R.id.menu_maleTop);
                     break;
            case R.id.menuMaleHair:  addClothes(R.id.menuMaleHair);
                     break;
            case R.id.menuFemaleHair:  addClothes(R.id.menuFemaleHair);
                     break;
            case R.id.menuMaleAccessories:  addClothes(R.id.menuMaleAccessories);
                     break;
            case R.id.menuFemaleAccessories:  addClothes(R.id.menuFemaleAccessories);
                     break;
            case R.id.action_save: saveClicked();// cropImage();
                     break;
            case R.id.action_cancel: goToStartScreen();// cropImage();
                     break;
            case R.id.uniformScale:
                changeAnisotropic(item);
                    break;
            case R.id.rotation:
                changeRotate(item);
                    break;
            default: Log.d("wrong menu","Invalid option");
                     break;
        }
        return super.onOptionsItemSelected(item);
    }

<item
    android:id="@+id/menu_sticker"
        android:showAsAction="always"
        android:icon="@drawable/ic_action_add"
        android:title="Add Sticker">
        <menu>
    <item
        android:id="@+id/menu_male"
        android:showAsAction="always"
        android:title="Male">
        <menu>
        <item
            android:id="@+id/menu_add_clothes"
            android:title="Add Clothes">
            <menu>
                <item
                android:id="@+id/menu_maleHat"
                android:title="Hat"/>
                <item
                android:id="@+id/menu_maleTop"
                android:title="Top"/>
                <item
                android:id="@+id/menu_malePants"
                android:title="Pants"/>
            </menu>
        </item>
        <item
        android:id="@+id/menuMaleAccessories"
        android:showAsAction="always"
        android:title="Add Accessories">
        </item>
        <item
            android:id="@+id/menuMaleHair"
            android:showAsAction="always"
            android:title="Add Hair">
        </item>
        </menu>
    </item>
    <item
        android:id="@+id/menu_female"
        android:showAsAction="always"
        android:title="Female">
        <menu>
        <item
            android:id="@+id/menu_add_clothes"
            android:title="Add Clothes">
            <menu>
                <item
                android:id="@+id/menu_femaleHat"
                android:title="Hat"/>
                <item
                android:id="@+id/menu_femaleTop"
                android:title="Top"/>
                <item
                android:id="@+id/menu_femalePants"
                android:title="Pants"/>
            </menu>
        </item>
        <item
        android:id="@+id/menuFemaleAccessories"
        android:showAsAction="always"
        android:title="Add Accessories">
        </item>
        <item
            android:id="@+id/menuFemaleHair"
            android:showAsAction="always"
            android:title="Add Hair">
        </item>
        </menu>
    </item>
    </menu>
 </item>

    <item
        android:id="@+id/action_settings"
        android:showAsAction="always"
        android:title="Sticker Settings"
        android:icon="@drawable/ic_action_gear">
            <group android:checkableBehavior="all">
                <item android:id="@+id/uniformScale"
                    android:title="Enable Re-sizing"
                    android:checked="true" />
                <item android:id="@+id/rotation"
                    android:title="Enable Rotation"
                    android:checked="false" />
            </group>
    </item>

    <item
        android:id="@+id/action_save"
        android:showAsAction="always"
        android:title="@string/action_save"
        android:icon="@drawable/ic_action_save">
    </item>

    <item
        android:id="@+id/action_cancel"
        android:showAsAction="always"
        android:title="Cancel"
        android:icon="@drawable/ic_action_cancel">
    </item>

1 个答案:

答案 0 :(得分:2)

你有没看过这个

I have 3 menu icons on the menu bar

就本答案而言,我假设您通过“菜单栏”指的是操作栏。

but everytime it only shows 2 icons, the last one is in nowhere

对于具有离屏MENU按钮的设备(或仿真器),按MENU按钮可以使用最后一个。

there is enough space for 3 icons, why only 2 are shown?

大概是因为Android不同意你对3个图标是否有足够空间的评估。

if the system thinks the space is not enough for the 3rd icon, why doesn't 
it combine the 2nd and 3rd icon into an overflow menu?

我不知道为什么你认为强迫第二个图标 - 这是你的承认,适合 - 溢出菜单将是一个好主意。第3个菜单项位于溢出菜单中,可通过操作栏上具有一个或三个垂直点按钮的设备上的MENU按钮访问,该按钮用于没有MENU按钮的设备

Source