2

我有一个被迫的屏幕布局potrait mode。因为它非常复杂,所以我现在没有时间投资为landscape mode. 这对我的应用类型也没有多大意义。

但是,对于输入字段,最好提供一个landscape mode,因为有些手机有一个硬件键盘,它会自动将手机横向对齐,因此很难查看仍在portrait mode.

我对此的解决方案是将所有文本输入放入对话框并临时启用横向模式(如果用户请求),直到对话框再次关闭。

这完美地工作。除了覆盖搜索小部件(从我的应用程序中按下搜索按钮时)。我正在寻找两个回调:一个,当搜索​​小部件被提升时(我无法收听搜索按钮,因为我有时通过软按钮手动提升它)和当它再次被关闭时(不管搜索是否最终被触发或取消 - 它需要适用于这两种情况)。

有什么建议么?

4

2 回答 2

3

Activity当搜索被激活时有一个回调。onSearchRequested()

对于搜索小部件的关闭/取消,您可以通过以下方式添加侦听器SearchManager

通过以下方式获得对您的参考SearchManager

context.getSystemService(Context.SEARCH_SERVICE)

getSystemService()

于 2010-12-14T19:07:29.013 回答
1

使用 Search Widget 时,您可以在关联的操作栏菜单项上使用 OnActionExpandListener。这也适用于低于 14 的 API 版本的 AppCompat 支持库。

OnActionExpandListener有两种方法:

  • onMenuItemAction折叠
  • onMenuItemAction展开

请参阅下面的一些代码示例:

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

    MenuItem searchItem = menu.findItem(R.id.action_search);

    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener(){

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            KLog.i(TAG, "onMenuItemActionCollapse");
            return true;
        }

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            KLog.i(TAG, "onMenuItemActionExpand");
            return true;
        }

    });

    mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);

    mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

如果您不使用支持库,请直接在菜单项上使用 OnActionExpandListener。

于 2014-03-03T17:59:53.523 回答