Android searchView下拉菜单屏幕宽度

2024-05-05

情况:

我的 appcompat 工具栏中有一个 searchview 小部件,允许通过 sqlitedatabase 提供自定义建议。

Problem:

我无法将下拉建议列表扩展到屏幕的整个宽度。最好的情况下,列表宽度几乎是屏幕的宽度,除了左侧和右侧的小边距/填充问题。如何使下拉列表与屏幕宽度相同?

我尝试过的事情:

搜索查看结果列表宽度 https://stackoverflow.com/questions/26299260/searchview-results-list-width

AutoCompleteText的setPadding、setRight/setLeft、setDropDownHorizo​​ntalOffset、设置布局参数、设置宽度为match_parent。

菜单/搜索.xml

<item
    android:id="@+id/search_restaurant"
    android:title="Search"
    android:icon="@drawable/search"
    android:orderInCategory="2"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always"/>

res/search_view_suggestions_list_item

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:background="@android:color/white"
    android:gravity="center_vertical"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"/>

活动/Activity.java

    MenuItem searchItem = menu.findItem(R.id.search_restaurant);
    searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setQueryHint("Search Restaurant");
    searchView.setOnQueryTextListener(this);
    searchView.setOnSuggestionListener(this);
    final AutoCompleteTextView searchAutoCompleteTextView = (AutoCompleteTextView) searchView
            .findViewById(R.id.search_src_text);
    searchAutoCompleteTextView.setThreshold(1);
    searchAutoCompleteTextView.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT);

    // Tried to change margins/padding here
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)
            searchAutoCompleteTextView.getLayoutParams();
    params.setMargins(0, 0, 0, 0);
    searchAutoCompleteTextView.setLayoutParams(params);
    searchAutoCompleteTextView.setPadding(0, 0, 0, 0);

    searchAutoCompleteTextView.setDropDownHorizontalOffset(-100);
    searchAutoCompleteTextView.setPadding(0,0,0,0);
    searchAutoCompleteTextView.setLeft(0);

    final View dropDownSuggestions = searchView.findViewById(searchAutoCompleteTextView
            .getDropDownAnchor());
    if (dropDownSuggestions != null) {
        dropDownSuggestions.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                int point[] = new int[2];

                dropDownSuggestions.getLocationOnScreen(point);
                int dropDownPadding = point[0] + searchAutoCompleteTextView
                        .getDropDownHorizontalOffset();

                Rect screenSize = new Rect();
                getWindowManager().getDefaultDisplay().getRectSize(screenSize);
                int screenWidth = screenSize.width();
                searchAutoCompleteTextView.setDropDownWidth(screenWidth * 2);
            }
        });
    }

您想要的宽度大小,可以通过使用 Wrap content 来实现。 试试这个代码: searchAutoCompleteTextView.setDropDownWidth(ViewGroup.LayoutParams.WRAP_CONTENT);

当我浏览此链接时,我得到了这个答案:

https://www.youtube.com/watch?v=408pMAQFnvs https://www.youtube.com/watch?v=408pMAQFnvs

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android searchView下拉菜单屏幕宽度 的相关文章

  • 这个方法比 Math.random() 更快吗?

    我是一名初学者 目前已经开始开发一款使用粒子群优化算法的 Android 游戏 我现在正在尝试稍微优化我的代码 并且 for 循环中有相当多的 Math random 几乎一直在运行 所以我正在考虑一种方法来绕过并跳过所有 Math ran
  • 如何在 ADB 连接期间禁用电池充电?

    问题描述 每次我在电脑和手机之间连接 USB 线时 电池都会自动充电 我想使用 ADB 协议 但我不想在 ADB 连接期间为电池充电 是否可以关闭此充电功能 当然 我该怎么做呢 环境 Android 操作系统 4 及更高版本的手机 我只需要
  • 如何在android中压缩和解压png图像

    您好 在我的应用程序中 当我单击 zip 按钮时 我需要压缩图像文件 当我单击解压缩按钮时 我需要解压缩文件 我尝试使用下面的代码来压缩图像 但我的问题是当我单击 zip 按钮时 正在创建 zip 文件 但之后在使用 winzip 软件的系
  • 导入已经创建的sqlite数据库(xamarin)

    我正在使用 Xamarin 想知道如何导入我已经创建的 sqlite 数据库 到目前为止 我已将其添加到资产文件夹中 但不知道下一步从哪里开始 string localPath Path Combine System Environment
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • 更改卡片高度即更改 Jetpack 中与 Material 3 组合的卡片颜色

    我正在使用 Card 可组合项 我希望它的颜色为白色 但是当我向它添加一些高度时 它的颜色会更改为更像主要容器颜色 我看过文档 其中有一种称为高程覆盖的东西 但找不到说明如何使用它的示例 这是我的代码 Card modifier Modif
  • onScale 事件后触发奇怪的 onScroll 事件

    我有一个同时使用 SimpleOnScaleGestureListener 和 SimpleOnGestureListener 的应用程序 每当我进行捏缩放时 我都会得到预期的 onScale 但是当我抬起时 我会看到一个奇怪的 onScr
  • 在 Android Lollipop 中从 Uri 中裁剪照片后总是返回 Null?

    我尝试在拍照或挑选照片后从 Uri 中裁剪图像 我的代码是这样的 public static void cropImage Uri uri Activity activity int action code Intent intent ne
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • 我想从 android 中服务器的视频 url 创建缩略图

    My code public static Bitmap retriveVideoFrameFromVideo String videoPath throws Throwable Bitmap bitmap null MediaMetada
  • 在选项卡上保存数据

    我有 3 个选项卡 每个选项卡都有一个单独的活动 我想在用户单击任一选项卡上的 保存 时保存数据 有几个选项可供选择 共享首选项 全局变量或将对象保存在上下文中 编辑 我必须保存图像和文本字段 Android 共享首选项 https sta
  • 像 WhatsApp 一样发送图片

    我做了一个聊天应用程序 我想添加照片 文件共享我的应用程序中的概念与 WhatsApp 相同 我已经使用该应用程序制作了Xmpp Openfire目前我正在使用此功能进行照片共享 但它并不完全可靠 public void sendFile
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • android中listview显示数据库中的数据

    我是安卓新手 我想知道如何在列表视图中显示数据库中的数据 它不会向数据库添加数据 我只是显示我们存储在数据库中的任何内容 请帮助我实现这一目标 提前致谢 使用这些课程可能会对您有所帮助 用于数据库创建 package com example
  • Glass 语音命令给定列表中最接近的匹配项

    使用 Glass 您可以通过 确定 Glass 菜单启动应用程序 它似乎会选择最接近的匹配项 除非命令相距数英里 并且您可以明显看到命令列表 无论如何 是否可以从应用程序内或从语音提示 在初始应用程序触发后 给出类似的列表并返回最接近的匹配
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • 剪切评级栏中的图像

    我制作了自己的评级栏 花朵图像有 4 种尺寸 xdpi hdpi 等 从 24px24px 到 64x64px
  • Android 地理围栏无法正常工作(未调用 IntentService)

    这是我的代码 安卓清单
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • R.java是手动修改的!恢复到生成的版本

    我在布局中添加了一个 xml 文件 之后这个错误就来了 但问题是我还没有接触过 R java 文件 现在 在我的新活动中 我要将其内容视图设置为我新创建的 xml 文件 但是当我执行 R layout 时 新创建的 xml 不会出现在建议中

随机推荐