Android 选项菜单样式

Android 选项菜单样式,android,android-optionsmenu,Android,Android Optionsmenu,我正在尝试创建自己风格的菜单项,但还没有做到 我有几种方法可以做到这一点: 1) menu.xml: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/add" android:icon="@android:drawable/ic_me

我正在尝试创建自己风格的菜单项,但还没有做到

我有几种方法可以做到这一点: 1)

menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add"
          android:icon="@android:drawable/ic_menu_add"
          android:title="@string/add" />
</menu>

但在这两种情况下,我的菜单项都保持“标准”。我应该怎么做才能改变它的大小、位置等?

首先,我不建议定义您自己的菜单样式。在我个人看来,这是不应该改变的。它对ICS+设备也没有用,因为它们没有专用的菜单按钮

但是,如果您希望这样做,您将不得不离开现有的菜单设置,因为无法更改默认行为

您需要做的是在活动的现有布局内创建一个隐藏的布局,然后钩住getKeyDown事件以隐藏/显示此布局

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        myCustomMenu.toggleVisibility();
        return true;
    } else {
        return super.onKeyDown(keyCode, event);
    }       
}
这个方法可能看起来像这样

public void toggleVisibility() {
    LinearLayout myCustomMenuLayout = (LinearLayout) findViewById(R.id.myCustomMenu);
    if (myCustomMenuLayout.getVisibility() == View.GONE) {
        myCustomMenuLayout.setVisibility(View.VISIBLE);
    } else {
        myCustomMenuLayout.setVisibility(View.GONE);
    }
}
当涉及到布局时,如果您在单独的布局中创建它,然后像下面一样引用它,这可能是最好的。这样您就可以多次引用它,而无需重复代码

<include android:id="@+id/myCustomMenu" layout="@layout/customMenu" visibility="gone">


从这里开始,您只需填充菜单并定义onclicklisteners等

我认为您无法更改菜单的外观,因为这是菜单样式的默认行为。
public void toggleVisibility() {
    LinearLayout myCustomMenuLayout = (LinearLayout) findViewById(R.id.myCustomMenu);
    if (myCustomMenuLayout.getVisibility() == View.GONE) {
        myCustomMenuLayout.setVisibility(View.VISIBLE);
    } else {
        myCustomMenuLayout.setVisibility(View.GONE);
    }
}
<include android:id="@+id/myCustomMenu" layout="@layout/customMenu" visibility="gone">