我已经注意到,当为用户显示带有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;
}
});
@编辑
答案 0 :(得分:1)
尝试一下
android:imeOptions="actionSearch|flagNoExtractUi|flagNoFullscreen