菜单setActionView(view)到xml

时间:2014-08-20 09:34:09

标签: android view android-actionbar action

在onCreateOptionsMenu中我设置了一个动作视图:

MenuItem item = ..
item.setActionView(action_view)
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

它运作正常。但我想把它移到我的xml菜单中,我似乎无法让它显示出来。它只显示标题。我试过很多版本,比如:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourApp="http://schemas.android.com/apk/lib/myPackage.myClass" >

    <item
        android:id="@+id/item"
        yourApp:actionViewClass="action_view"
        android:showAsAction="always" or youtApp:showAsAction="always"
        android:title="title"
    </item>

问题必须是转到action_view变量,但我似乎无法弄清楚

2 个答案:

答案 0 :(得分:0)

你是否给菜单栏充气?

@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
   inflater.inflate(R.menu.menu_name, menu);

   mMenu = menu;
   if(mMenu != null){
       MenuItem item = mMenu.findItem(R.id.item_id);
       if(item != null){
           item.setVisible(false);
       }
    }

    super.onCreateOptionsMenu(menu, inflater);
}

你还有setHasOptionsMenu(true); @onCreate()函数吗?

答案 1 :(得分:0)

试试这个:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
     MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.item:
    // Write your action_view here

    break; 
    case R.id.your_other_item_id:
    //Your other Menu item logic

    break;
    }       
    return super.onOptionsItemSelected(item);       
}