android - 如何禁用 SearchView 中的搜索对话框

标签 android search searchview

我注意到在某些设备上,当向用户显示带有 SearchView 的 View 时,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;
        }
    });

@编辑

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

最佳答案

试试这个

android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen

关于android - 如何禁用 SearchView 中的搜索对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817744/

相关文章:

java - Activity 如何启动一个新 Activity 并自行关闭?

android - SearchView 可以同时具有语音搜索按钮和键盘语音输入吗?

java - 使用自定义分隔符自动完成搜索 View

android - 在 android 工具栏中正确实现 SearchView

android - 如何在maven上发布一个库项目?

java - android fragment 中的textview中不显示全文

android - 突出显示 ListView 中的神秘行为

mysql - 在MYSQL中简单的查询数据

java - 使用多核的前缀搜索算法

web-applications - 如何为高流量 webapp 实现 'saved search' 功能?