2011-05-03 86 views
3

在搜索對話框的搜索欄中輸入時,我已經獲得搜索建議。在縱向模式下輸入時,結果會在搜索對話框中列出。但是,當我改變爲橫向模式時,searchdialog的文本輸入字段變爲全屏(我希望你知道我的意思),搜索建議無法再看到。我知道,例如谷歌地圖,也在橫向模式下,搜索建議顯示在「大」文本輸入字段下...我應該鍵入以在景觀模式下輸入時獲得此「視圖」?顯示搜索在橫向模式下輸入時的建議

謝謝!

托馬斯

+0

你可以顯示你的屏幕布局代碼? – 2011-05-03 09:53:52

回答

5

如果你想你的建議,在景觀展現出來,你需要做以下之一:

  • 添加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())對由AutoCompleteTextViewmAdapter.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如下終於實現了這個方法。

相關問題