我在搜索对话框的搜索字段中输入时已经获得了搜索建议.在纵向模式下键入时,结果将列在搜索对话框下.但当我改为横向模式时,searchdialog的文本输入字段变为全屏(我希望你知道我的意思),搜索建议再也看不到了.我知道例如来自谷歌地图,也在横向模式下,搜索建议显示在“大”文本输入字段下…我应该输入哪个代码以在横向模式下键入时获得此“视图”?
谢谢!
托马斯
解决方法:
如果您希望将建议显示在横向中,则需要执行以下操作之一:
>将SUGGEST_COLUMN_QUERY添加到您的建议结果中
>将android:searchMode =“queryRewriteFromText”或“android:searchMode =“queryRewriteFromData”添加到yoursearchable.xml`
但是,我认为建议显示普通弹出窗口而不是全屏键盘更好.您可以通过将android:imeOptions =“flagNoExtractUi”添加到您的searchable.xml来实现此目的.
就这样.如果你很好奇,这就是我追踪它的方式:
Hierarchy Viewer将告诉您搜索对话框由SearchDialog
实现,它使用AutoCompleteTextView
作为完成文本视图.它的buildDropDown()
函数对AutoCompleteTextView的mAdapter.getItem()返回的项调用Filter.convertResultToString()(到convertSelectionToString()
),然后将它们传递给InputMethodManager.displayCompletions()(它负责你想要的建议).
对于SearchDialog,适配器是SuggestionsAdapter
.这是CursorAdapter
的子类,其getFilter()方法返回一个CursorFilter类,它通过委托适配器类上的convertToString()来实现convertResultToString()
. SuggestionsAdapter最终实现如下方法:
public CharSequence convertToString(Cursor cursor) {
if (cursor == null) {
return null;
}
String query = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_QUERY);
if (query != null) {
return query;
}
if (mSearchable.shouldRewriteQueryFromData()) {
String data = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_INTENT_DATA);
if (data != null) {
return data;
}
}
if (mSearchable.shouldRewriteQueryFromText()) {
String text1 = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_TEXT_1);
if (text1 != null) {
return text1;
}
}
return null;
}
……这导致了上面第一段中的建议.