在我的应用程序中,我正在制作一个search interface,其中 SearchView
分别在失去并获得焦点时崩溃和扩展 . 然而,失败的焦点只发生在两种情况:
-
按下后退按钮时 .
-
按下
SearchView
旁边的主页图标时 .
如果用户不仅点击这两件事,而且点击屏幕上的任何其他内容(例如,任何按钮或屏幕的任何空白部分而没有视图),我希望它失去焦点(并因此崩溃) .
在我的应用程序中,我正在制作一个search interface,其中 SearchView
分别在失去并获得焦点时崩溃和扩展 . 然而,失败的焦点只发生在两种情况:
按下后退按钮时 .
按下 SearchView
旁边的主页图标时 .
如果用户不仅点击这两件事,而且点击屏幕上的任何其他内容(例如,任何按钮或屏幕的任何空白部分而没有视图),我希望它失去焦点(并因此崩溃) .
3 回答
好吧,我发现了以下解决方案 . 我在每个不是searchview实例的视图上使用了setOnTouchListener来折叠搜索视图 . 它对我来说很完美 . 以下是代码 .
This是我提到的答案 .
这对我有用,mOptionsMenu保存在onCreateOptionsMenu中:
好吧,我有另一种更简单,更整洁的方法 . 如果您将搜索小部件用作工具栏中的操作视图(https://developer.android.com/guide/topics/search/search-dialog#UsingSearchWidget),则可能需要使SearchView失去焦点并在用户触摸屏幕上的任何其他位置时隐藏键盘 .
除了在SearhView之外的层次结构中的每个视图上迭代和设置触摸侦听器,您可以简单地使用此solution,因为SearchView中有一个AutoCompleteTextView .
Step 1: Make the parent view(content view of your activity) clickable and focusable by adding the following attribute
Step 2: Set OnFocusChangeListener on the SearchView AutoCompleteTextView
而已!希望这对未来的读者有用:)