ActionBar搜索视图打开时禁用按钮,关闭时启用它

时间:2015-10-24 17:26:09

标签: java android

我该怎么办?

  • 当ActionBar搜索视图关闭时,该按钮已启用。

enter image description here

  • 打开ActionBar搜索视图时,该按钮被禁用。

enter image description here

我可以使用听众吗?或者我被迫使用像while循环或其他东西一样的东西?

对于打开SearchView的情况,我知道我可以使用menuItem.setOnMenuItemClickListener,但对于结束我不知道......

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    MenuItem menuItem = menu.findItem(R.id.search);

    //...

    menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            findViewById(R.id.button).setEnabled(false);
            return false;
        }
    });
    return true;
}

1 个答案:

答案 0 :(得分:1)

要了解SearchView何时开启或关闭,您可以使用OnActionExpandListener

  • 何时关闭onMenuItemActionCollapse将被调用。
  • 何时打开onMenuItemActionExpand将被调用。

例如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    MenuItem menuItem = menu.findItem(R.id.search);

    //...

    MenuItemCompat.setOnActionExpandListener(menuItem, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            findViewById(R.id.button).setEnabled(false);
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            findViewById(R.id.button).setEnabled(true);
            return true;
        }
    });

    return true;
}