如何在SearchView中禁用搜索对话框

时间:2018-10-15 13:21:06

标签: android search searchview

我已经注意到,当为用户显示带有SearchView的视图时,SearchView在某些设备上会打开一个特殊的全屏对话框,其中带有专用的Search按钮。我想避免在不显示此对话框。我希望SearchView的行为类似于EditText。因为在它下面,我有一个listView正在更改内容,因此用户需要查看它。 这就是我在XML中设置SearchView的方式:

<SearchView
    android:layout_marginStart="50dp"
    android:layout_marginEnd="50dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:id="@+id/search_view_guests"
    android:background="@drawable/search_view"
    android:clickable="true"
    android:iconifiedByDefault="false"
    android:queryHint="Type in username..."
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true" />

这就是我在代码中使用它的方式:

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            Call<List<User>> call = retrofit.listUsers(null, null, newText);
            call.enqueue(new Callback<List<User>>() {
                @Override
                public void onResponse(Call<List<User>> call, Response<List<User>> response) {
                    usersList = new ArrayList<User>();
                    usersList.addAll(response.body());
                    InvAdapter adapter = new InvAdapter(
                            getContext(),
                            R.layout.list_view_invitation_item,
                            usersList
                    );
                    listView.setAdapter(adapter);
                    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @RequiresApi(api = Build.VERSION_CODES.M)
                        @SuppressLint("ResourceAsColor")
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            User user = (User) parent.getItemAtPosition(position);
                            if(!temporaryInvited.contains(user)) {
                                markAsInvited(view);
                            }
                        }
                    });
                }

                @Override
                public void onFailure(Call<List<User>> call, Throwable t) {

                }
            });
            return false;
        }
    });

@编辑

这是我可以在某些设备上看到的默认视图(相对较小) enter image description here

1 个答案:

答案 0 :(得分:1)

尝试一下

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen