menuitem中的OnActionExpandListener不起作用。怎么解决?

时间:2013-09-12 10:56:44

标签: java android android-actionbar searchview

我正在开发一个适用于API Level 14的Android应用程序。

我的菜单文件中有一个项目

  <item
        android:id="@+id/menu_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_action_action_search"
        android:orderInCategory="3"
         android:showAsAction="always"/>

我想知道这个搜索视图的扩展和崩溃,我尝试了这段代码,但它无法正常工作

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_search, menu);
            MenuItem mSearchItem = menu.findItem(R.id.menu_search);

            mSearchItem.setOnActionExpandListener( new OnActionExpandListener() {

                @Override
                public boolean onMenuItemActionExpand(MenuItem item) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "onMenuItemActionExpand", 1)
                     .show();
                    return true;
                }

                @Override
                public boolean onMenuItemActionCollapse(MenuItem item) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "onMenuItemActionExpand", 1)
                     .show();
                    return true;

                }
            });
    }

}

为什么我没有得到祝酒词?

我也尝试过代码格式Handling collapsible action views,它也无效!为什么这些东西不起作用?

修改

我可以使用

让它工作
mSearchView.addOnLayoutChangeListener(new OnLayoutChangeListener() {

            @Override
            public void onLayoutChange(View v, int left, int top, int right,
                    int bottom, int oldLeft, int oldTop, int oldRight,
                    int oldBottom) {

                SearchView searchView = (SearchView) v;
                if (searchView.isIconified()) {
                       }
                       else{
                        }
           }
   });

但它很慢!

2 个答案:

答案 0 :(得分:4)

解决方案有类似的问题(由提问者评论,我只是假定它可以得到更多的重点):

android:showAsAction="always|collapseActionView"添加到您的菜单项。

 <item android:id="@+id/action_search"
        android:icon="@drawable/ic_action_search"
        android:title="@string/action_search"
        android:showAsAction="always|collapseActionView"
        android:actionViewClass="android.widget.SearchView"
        android:queryHint = "@string/search_hint"/>

答案 1 :(得分:0)

Toast.makeText(MainActivity.this, "onMenuItemActionExpand", 1).show();

建议您使用Toast.LENGTH_SHORTToast.LENGTH_LONG代替“1”。

示例:

Toast.makeText(MainActivity.this, "onMenuItemActionExpand", Toast.LENGTH_SHORT).show();