- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的支持工具栏中尝试让 SearchView 正常工作数小时后(它出现,显示提示文本但拒绝接受文本),我不得不求助于您。
我在 Google 上搜索了几个小时,在这里和其他网站上阅读了很多答案,查看了很多文档和一篇处理该主题的特定博客文章,但我无法隔离问题。
如前所述,我使用的是 SearchView 和 Toolbar 以及 MenuItemCompat 的支持版本。另外,ActionBarActivity。我确保我虔诚地遵循了所有步骤(this blog post 在这个问题上有很多话要说,甚至是官方文档中的错误)。
我已经正确设置了 AndroidManifest.xml 文件,我有一个 searchable.xml,据我所知,它被正确引用(我的意思是,提示文本通常显示在 SearchView 字段中),我有一个搜索在 list 中设置了 android.intent.action.SEARCH Intent 过滤器的结果 Activity 。
仍然没有。老实说,我被难住了。
这是 SearchView 托管 Activity 的 onCreateOptionsMenu():
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem search = menu.findItem(R.id.search);
searchView = (SearchView) MenuItemCompat.getActionView(search);
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
return true;
}
这是 res/xml 中的 searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/search_title" >
</searchable>
最后,这里是res/menu中的menu.xml文件:
<item
android:id="@+id/search"
android:icon="@drawable/ic_search_white_18dp"
android:title="@string/search_title"
myappname:actionViewClass="android.support.v7.widget.SearchView"
myappname:showAsAction="ifRoom|collapseActionView"/>
(显然 myappname 在这里替换了我的真实应用名称)。
奇怪的是,添加后语音搜索完全正常
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
在 searchable.xml 中。它甚至将 Intent 中识别的短语发送到搜索结果 Activity 。唯一的问题是我根本无法在文本字段中输入文本——那里甚至没有光标闪烁。尝试执行类似 searchView.requestFocus() 的操作没有结果。
最佳答案
在为此浪费了 8 个小时之后,我想出了一个解决方案。我不确定它的破解程度如何,但它确实有效。
我注意到,就聚焦而言,SearchView 中的 EditText 表现不正常:它没有光标,而且奇怪的是,当我拉下通知抽屉时,它似乎改变了聚焦。我决定遵循这样的理论,即问题出在 SearchView 中的 EditText 的焦点,所以我去寻找 EditText 的 android.R.id。
经过搜索,我找到了this answer .因此,我在 SearchView 中得到了对 EditText 的引用:
EditText searchField = (EditText)
searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
然后我请求获得 EditText 的焦点:
searchField.requestFocus();
... 突然 SearchView 可以接受文本,所有相关的回调都在工作!
我只剩下一个问题:调用 onPause() 时,由于 EditText 失去焦点,我的解决方案停止工作。所以我刚刚添加:
invalidateOptionsMenu();
...在 onResume() 中,现在它完美地工作了。
不过,我必须说:这是一次非常奇怪的体验,因为我虔诚地遵循了这些步骤(不是在官方 Android 开发人员指南中,它有很多错误)并且仍然无法让 SearchView EditText 获得焦点。我怀疑抽屉导航专注于 Activity 创建,也许这就是问题的根源,但我还不确定。
关于java - 无法让 android.support.v7.widget.SearchView 接受文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223299/
我的 Activity 的主要内容区域中有一个 SearchView。 我需要覆盖我的 style.xml 文件中的 SearchView 样式(这样我就可以删除 SearchView 的下划线 -
我正在使用 Firebase-UI 的 FirebaseRecyclerAdapter。我无法在 SearchView 中实现过滤器。 我的数据库: 我的问题: 如何使用 FirebaseRecycl
我正在尝试以编程方式删除 SearchView 提示中的图标所占用的空间,但由于某种原因它不会消失。 此代码使图标不可见,但不会删除空格: try { Field mDrawa
我想在用户未输入任何内容时在 SearchView 中显示一些默认建议。我正在使用矩阵光标手动设置我的自定义建议适配器。我尝试在 onFocusChange 和 onClickListner 中设置适
如何删除或更改编辑文本中的搜索 View 图标?我正在使用 Appcompat 库。 我使用下面的代码修改和删除但它不起作用: SearchManager searchManager = (Searc
当我启动我的应用程序时,会引发以下错误: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.app, PID: 5513 jav
在我的应用程序中使用 SearchView。 无论如何我可以延迟对 onQueryTextChange() 方法的调用。例如,当用户键入一系列字符时,他必须等待此方法被调用。 此等待应该不取决于键入的
我正在尝试从 Fragment 中的工具栏获取我的 SearchView。 我在 onCreateOptionsMenu 中引入了一个菜单项。 问题:searchItem.getActionView(
我不确定为什么会收到此错误。这是有问题的菜单: 这是根据 developer guide 的可搜索配置. 添加到我的 list 文件中: 我在新的搜索 Activity 中也有一个
我是一名开发 Android 应用程序的新手,以下是该应用程序的第一个屏幕。我希望我的应用程序使用该搜索对话框执行搜索。 为此,我关注了http://developer.android.com/gui
我正在 CustomAdapter 上执行 SearchView,它将在其中搜索门名称。在我尝试运行该应用程序后,它突然崩溃并给我如上所述的错误。我不知道我什至做错了哪一部分导致我每次尝试运行我的应用
您好,我需要在 searchView 中放置一些文本并聚焦/展开 searchView 小部件。 这是我尝试过的,但它不起作用 @Override public boolean onCreateOpt
所以当我遇到错误“无法解析类 SearchView”时,我试图在我的应用程序中包含一个搜索栏。谷歌没有帮助,所以我来到这里。这是我的代码: 其余的 xml 已正确完成,我直接从 android 获取
我的搜索 View 有问题。 我有 2 个主题,当我第一次接触 searchview 时,我得到了丑陋的第一张图片。但是当我再次进入搜索 View 时,我从第二张图片中得到了很好的主题。 我总是想走第
我使用的不是 menuItem 而是布局中的搜索 View 。我支持的最低 API 级别是 9,搜索 View 是 11。 现在我这样创建了我的搜索 View : 在直线布局中。我注意到警告,所以
我在 here 中解决了我的问题之后当我在搜索框中输入文本时,搜索过滤器仍然不起作用。 这是我的代码: package intikom.streammobile.Customer; import an
我正在创建类似于屏幕上的 Activity 。我在工具栏中阅读了许多关于 SearchView 的教程,并在我的 Activity 中实现了它并且它有效(上面的代码)。但是如何制作这个下拉列表呢?感谢
我按照 Android 的官方说明在工具栏中实现了 SearchView。 SearchView 本身工作得很好,但是当我点击搜索图标时,它会向左移动,而不是显示搜索提示和关闭按钮,尽管如果我单击这个
Android Studio 3.2.1 在我的app / build.gradle中: android { compileSdkVersion 28 defaultConfig {
我有一个 RecylerView,它有 SearchView 小部件和包含复选框和玩家名称的项目列表。当我滚动项目并选择项目复选框时没有问题。但是,当我通过名称搜索项目然后选择它们时,就会出现问题,当
我是一名优秀的程序员,十分优秀!