SearchView小部件 - 内部选择所有文本的任何方式?

时间:2011-10-05 15:21:14

标签: android android-widget

我正在使用SearchView小部件(Honeycomb中的新功能)。我可以通过setQuery设置初始文本,这有效。

但是有没有办法选择所有文本(类似于EditText.selectAll)?

我想从以前的搜索中提供用户预设文本,但是无需删除旧文本即可轻松输入新文本。

3 个答案:

答案 0 :(得分:3)

有点晚了,但我遇到了类似的问题。

  

我想从以前的搜索中提供用户预设文本,但是无需删除旧文本即可轻松输入新文本。

我找到了一个适合我的解决方案。您只需要访问内部EditText,然后以通常的方式选择所有文本。

要执行此操作,请尝试以下操作。 请注意,我的代码在c#中不是Java,而是类似。

int id = searchView.Context.Resources.GetIdentifier("android:id/search_src_text", null, null);
EditText editText = searchView.FindViewById<EditText>(id);
editText.SelectAll();

在Java中它应该是这样的:

int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText editText = (EditText) searchView.findViewById(id);
editText.selectAll();

我刚刚在API级别15上测试它!但我认为它也适用于较低级别。

答案 1 :(得分:3)

您只需捕获内部EditText,然后执行任何操作。

EditText edit = (EditText)searchView.findViewById(R.id.search_src_text);
edit.selectAll();

答案 2 :(得分:1)

您想要做的事情在PC上运行良好,但在触摸设备上不是很方便。

我使用suggestion provider来允许用户重复使用最近的搜索,可能启用了查询优化。