在SearchView中键入时带有文本的奇怪灰色弹出窗口

时间:2015-05-15 07:26:58

标签: android searchview

我的应用程序中有一个SearchView,当我输入时,每个角色都会出现在一个奇怪的弹出窗口中,如下所示。

Example

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:background="@color/white"
    tools:context="com.example.myapp">

    <SearchView
        android:id="@+id/search_view"
        android:queryHint="@string/select_story_query_hint"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:divider="@color/gray"
        android:dividerHeight="1dp"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/create_new_story_button"
        android:id="@+id/createStoryButton"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:layout_marginBottom="5dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:background="@drawable/low_priority_button_background"
        android:textColor="@color/black" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/done"
        android:id="@+id/select_story_done"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:layout_marginTop="5dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:background="@drawable/button_background"
        android:textColor="@color/white" />
</LinearLayout>

代码:

mSearchView = (SearchView) view.findViewById(R.id.search_view);
mSearchView.setIconifiedByDefault(false);
mSearchView.setOnQueryTextListener(this);
mSearchView.setSubmitButtonEnabled(false);
mSearchView.setQueryHint(getString(R.string.query_hint));

监听器:

@Override
public boolean onQueryTextChange(String newText) {
    if (TextUtils.isEmpty(newText)) {
        mListView.clearTextFilter();
    } else {
        mListView.setFilterText(newText);
    }
    return true;
}

我搜索时似乎无法找到有关此问题的任何信息(猜测我没有使用正确的关键字)。这也发生在运行不同版本的Android的多个设备上(N5与5.1,O + O与4.4)并且只有这个特定字段存在此问题,所有其他EditText字段都没有问题。

1 个答案:

答案 0 :(得分:1)

这与ListView的过滤功能的内置功能有关。正如JonasCz指出的那样,如何解决这个问题可以找到here。我的代码更改为onQueryTextChange()方法来解决此问题(基本上使用Adapter的过滤器功能):

    @Override
    public boolean onQueryTextChange(String newText) {
        Filter filter = adapter.getFilter();
        if (TextUtils.isEmpty(newText)) {
            filter.filter("");
        } else {
            filter.filter(newText);
        }
        return true;
    }