在搜索对话框的搜索栏中输入时,我已经获得搜索建议。在纵向模式下输入时,结果会在搜索对话框中列出。但是,当我改变为横向模式时,searchdialog的文本输入字段变为全屏(我希望你知道我的意思),搜索建议无法再看到。我知道,例如谷歌地图,也在横向模式下,搜索建议显示在“大”文本输入字段下...我应该键入以在景观模式下输入时获得此“视图”?显示搜索在横向模式下输入时的建议
谢谢!
托马斯
在搜索对话框的搜索栏中输入时,我已经获得搜索建议。在纵向模式下输入时,结果会在搜索对话框中列出。但是,当我改变为横向模式时,searchdialog的文本输入字段变为全屏(我希望你知道我的意思),搜索建议无法再看到。我知道,例如谷歌地图,也在横向模式下,搜索建议显示在“大”文本输入字段下...我应该键入以在景观模式下输入时获得此“视图”?显示搜索在横向模式下输入时的建议
谢谢!
托马斯
如果你想你的建议,在景观展现出来,你需要做以下之一:
SUGGEST_COLUMN_QUERY
您的建议会导致android:searchMode="queryRewriteFromText"
或``机器人:searchMode =“queryRewriteFromData”to your
searchable.xml`但是,我认为对于建议显示正常的弹出窗口而不是全屏键盘更好。您可以通过将android:imeOptions="flagNoExtractUi"
添加到您的searchable.xml
来实现此目的。
就是这样。如果你很好奇,这里就是我跟踪下来:
Hierarchy Viewer会告诉你,搜索对话框是由SearchDialog
实现,它使用一个AutoCompleteTextView
用于完成文本视图。它的buildDropDown()
函数调用Filter.convertResultToString()
(通过convertSelectionToString()
)对由AutoCompleteTextView
的mAdapter.getItem()
返回的项目,然后将这些传递给InputMethodManager.displayCompletions()
(它负责您所需的建议)。
在SearchDialog
的情况下,适配器是SuggestionsAdapter
。这是CursorAdapter
的一个子类,它的getFilter()
方法返回一个CursorFilter
类,该类仅通过在适配器类上委托convertToString()
来实现convertResultToString()
。
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;
}
...这导致在上述第一款的建议:SuggestionsAdapter
如下终于实现了这个方法。
你可以显示你的屏幕布局代码? – 2011-05-03 09:53:52