【问题标题】:Menu setActionView(view) to xml菜单 setActionView(view) 到 xml
【发布时间】:2014-08-20 09:34:08
【问题描述】:

在 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 变量,但我似乎无法弄清楚

【问题讨论】:

    标签: android view android-actionbar action


    【解决方案1】:

    你给菜单栏充气了吗?

    @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()函数吗?

    【讨论】:

    • 我夸大了它,因为我有其他正常的菜单项,但我没有那个 setVisible 部分。如果我添加它,我会得到 java.lang.IndexOutOfBoundsException: Invalid index 2131492922, size is 3
    • 我的错...在这种情况下你需要使用`menu.findItem(R.id.item_id)
    • 它运行,但仍然没有显示任何内容。可能我应该提到其他正常项目正常显示。我没有 setHasOptionsMenu 的片段
    • yourapp:showAsAction="always" 错误...尝试使用 android:showAsaction="always" 或添加此行(如果不使用支持库)
    • 原来它只显示标题。它没有得到 action_view 变量
    【解决方案2】:

    试试这个:

    @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);       
    }
    

    【讨论】:

    • 我当然有 onOptionsItemSelected。问题是该项目没有显示,而不是它没有做某事
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2013-09-22
    • 2012-07-11
    相关资源
    最近更新 更多