如何在android api 8+中的溢出图标下显示菜单项

时间:2014-11-24 09:32:07

标签: android android-actionbar android-menu android-actionbar-compat

如何强制在溢出图标下显示菜单项。我从api 8级及以上提供应用程序支持。现在它显示为actionview。 我的menuLayout如下。

 //main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >

<item
    android:id="@+id/action_menu_setting"
    android:title="@string/menuItemSetting"
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/action_signout"
    android:title="@string/menuItemLogout"
    app:showAsAction="ifRoom"/>
 </menu>     

在Java类

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

我尝试了showAsAction的其他选项,但都没有奏效。请建议我如何在overflow图标下方显示以上两个菜单itme(当我点击这两个菜单时,它们将作为动作列表出现。)

2 个答案:

答案 0 :(得分:1)

你能发贴java代码吗?您的活动中是否包含以下代码?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    getMenuInflater().inflate(R.menu.menu, menu);;
    return super.onCreateOptionsMenu(menu);
}

编辑: 我总是使用这样的代码(当我点击action_settings它会显示动作列表包含设置和栏,我想只需要替换android:title =&#34; @ string / action_settings&#34;用android:icon)

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/action_settings">
         <menu>
            <item 
                android:enabled="true" 
                android:visible="true" 
                android:title="setting" 
                android:id="@+id/setting">
            </item>
            <item 
                android:enabled="true" 
                android:visible="true" 
                android:title="B" 
                android:id="@+id/bar">
            </item>
        </menu>
    </item>
     <item
        android:id="@+id/action_settings1"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/action_settings"/>
</menu>

希望有所帮助

答案 1 :(得分:1)

自定义操作栏的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    android:background="@drawable/header"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvActionBarTitle"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:gravity="center"
        android:textColor="#FFFFFF"
        android:textSize="30sp" />

    <Button.../>
<!--     your code for button -->
</LinearLayout>

您可以在onCreate中调用以下函数并在此函数中定义按钮,因为我已经定义了appName文本视图及其OnClick事件

 private void createCutomActionBarTitle()
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
            {
                this.getActionBar().setHomeButtonEnabled(true);
            }
            this.getActionBar().setDisplayShowCustomEnabled(true);
            this.getActionBar().setDisplayShowTitleEnabled(false);
            this.getActionBar().setBackgroundDrawable(drawable);
            this.getActionBar().setIcon(logo);
            LayoutInflater inflator = LayoutInflater.from(this);
            View v = inflator.inflate(R.layout.custom_action_bar, null);

            ((TextView) v.findViewById(R.id.tvActionBarTitle)).setText(Global.ACTIVITY_NAME);

            this.getActionBar().setCustomView(v);
        }

希望这对你有用:) 但点击设备的物理按钮不会触发你需要查找的按钮,因为我对它一无所知