其他分享
首页 > 其他分享> > android – 在横向模式下键入时显示搜索建议

android – 在横向模式下键入时显示搜索建议

作者:互联网

我在搜索对话框的搜索字段中输入时已经获得了搜索建议.在纵向模式下键入时,结果将列在搜索对话框下.但当我改为横向模式时,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;
}

……这导致了上面第一段中的建议.

标签:landscape,android,search-suggestion
来源: https://codeday.me/bug/20190903/1797557.html