Tsc*_*kle 3 android landscape search-suggestion
我在搜索对话框的搜索字段中输入时已经获得了搜索建议.在纵向模式下键入时,结果将列在搜索对话框下.但当我改为横向模式时,searchdialog的文本输入字段变为全屏(我希望你知道我的意思),搜索建议再也看不到了.我知道例如来自谷歌地图,也在横向模式下,搜索建议显示在"大"文本输入字段下...我应该输入哪个代码以在横向模式下键入时获得此"视图"?
谢谢!
托马斯
如果您希望将建议显示在横向中,则需要执行以下操作之一:
SUGGEST_COLUMN_QUERY到您的建议结果android:searchMode="queryRewriteFromText"或``android:searchMode ="queryRewriteFromData" to yoursearchable.xml`但是,我认为建议显示普通弹出窗口而不是全屏键盘更好.您可以通过添加android:imeOptions="flagNoExtractUi"到您的searchable.xml.
就这样.如果你很好奇,这就是我追踪它的方式:
层次结构查看器将告诉您搜索对话框是由实现的SearchDialog,它使用AutoCompleteTextView完成文本视图.它的buildDropDown()函数调用Filter.convertResultToString()(通过convertSelectionToString())AutoCompleteTextViews 返回的项目mAdapter.getItem(),然后将它们传递给InputMethodManager.displayCompletions()(它负责你想要的建议).
在这种情况下SearchDialog,适配器是一个SuggestionsAdapter.这是它的子类CursorAdapter,其getFilter()方法返回一个CursorFilter类,该类convertResultToString()通过委托convertToString()适配器类来实现.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;
}
Run Code Online (Sandbox Code Playgroud)
......这导致了上面第一段中的建议.
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |