【问题标题】:MaterialSearchView doesn't get focus on startup - AndroidMaterialSearchView 没有专注于启动 - Android
【发布时间】:2016-06-20 08:28:30
【问题描述】:

我正在使用 MaterialSearchView (https://github.com/MiguelCatalan/MaterialSearchView),这是一个在 Material Design Approach 中实现 SearchView 的库。

它在工具栏中放置了一个搜索视图。但是不知道如何专注于搜索,以便在活动开始时,搜索立即获得焦点并出现虚拟键盘。只有当我点击搜索图标时它才会聚焦。

MaterialSearchView searchView;
        searchView = MaterialSearchView)getActivity().findViewById(R.id.search_view);
searchView.requestFocus();

没用。

我从片段和活动中尝试过。

谢谢

【问题讨论】:

  • 你的意思是搜索视图会在活动开始时打开吗?如果你检查库,你会发现一个函数showSearch() 来打开搜索视图。
  • 当你在一个视图上调用请求焦点时,该视图的focusable和focusableInTouchMode应该在xml中设置为true。尝试在 xml 中设置 focusable 和 focusableInTouchMode true。

标签: android material-design android-toolbar


【解决方案1】:

我建议您使用my implementation of MaterialSearchView,无需单击工具栏/操作栏即可打开它。

例如,在您的 Activity 中,您可以执行以下操作:

// Activity:
MaterialSearchView searchView = (MaterialSearchView) findViewById(R.id.search_view);

然后,在代码中的任何位置,您都可以通过调用来打开视图:

searchView.openSearch();

并通过调用关闭它:

searchView.closeSearch();

因此,例如,您可以将 openSearch() 放入您的 onResume() 中。这样,当您的Activity 启动时,您将始终打开搜索视图。您也可以从您的Activity 上的任何Button 调用该方法。

P.S.:它还支持搜索建议和搜索历史。

奖励:有一个 gif(它以葡萄牙语显示,但它也支持英语,所以不用担心)。

有关如何设置的更多信息以及查看用例,您可以check the docs

【讨论】:

  • 不客气!如果您喜欢它并且它有帮助,请不要忘记将答案标记为已接受:)
【解决方案2】:

创建一个菜单引用对象:

private Menu menu;
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
   this.menu = menu;
//rest of your code here ...
}

然后你的 Activity 的 onResume() 你可以像这样以编程方式模拟项目点击:

onOptionsItemSelected(menu.findItem(R.id.searhView));

【讨论】:

  • 我在 onResume() 上执行空指针,该菜单为空。
猜你喜欢
  • 2016-02-08
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多