在搜索對話框的搜索欄中輸入時,我已經獲得搜索建議。在縱向模式下輸入時,結果會在搜索對話框中列出。但是,當我改變爲橫向模式時,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