像编辑文本一样的旋转器

2024-02-17

我有一个带有 TextInputLayout+TextInputEditText 和微调器的表单。我想要微调器高度换行文本,但下拉列表中有大项目。问题是微调器的高度取决于下拉项的高度(simple_spinner_dropdown_item)。 我设置 style="@style/Base.Widget.AppCompat.Spinner.Underlined" 以便在微调器下方添加行。

有什么解决办法吗?


像编辑文本一样的旋转器

如果你想要像 edittext 这样的微调器,就像自动完成文本视图.您可以定制您的AppCompatAutoCompleteTextView像那样:

public class AutoCompleteDropDown extends AppCompatAutoCompleteTextView {
    //    implements AdapterView.OnItemClickListener
    private static final int MAX_CLICK_DURATION = 200;
    private long startClickTime;
    private boolean isPopup;
    private int mPosition = ListView.INVALID_POSITION;

    public AutoCompleteDropDown(Context context) {
        super(context);
//        setOnItemClickListener(this);
    }

    public AutoCompleteDropDown(Context arg0, AttributeSet arg1) {
        super(arg0, arg1);
//        setOnItemClickListener(this);
    }

    public AutoCompleteDropDown(Context arg0, AttributeSet arg1, int arg2) {
        super(arg0, arg1, arg2);
//        setOnItemClickListener(this);
    }

    @Override
    public boolean enoughToFilter() {
        return true;
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction,
                                  Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
        if (focused) {
            performFiltering("", 0);
            InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getWindowToken(), 0);
            setKeyListener(null);
            dismissDropDown();
        } else {
            isPopup = false;
        }
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {

        switch (event.getAction()) {
            case MotionEvent.ACTION_UP: {
                if (isPopup) {
                    dismissDropDown();
                } else {
                    requestFocus();
                    showDropDown();
                }
                break;
            }
        }

        return super.onTouchEvent(event);
    }

    @Override
    public void showDropDown() {
        super.showDropDown();
        isPopup = true;
    }

    @Override
    public void dismissDropDown() {
        super.dismissDropDown();
        isPopup = false;
    }



    @Override
    public void setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom) {
        Drawable dropdownIcon = ContextCompat.getDrawable(getContext(), R.drawable.ic_expand_more_black_18dp);
        if (dropdownIcon != null) {
            right = dropdownIcon;
            right.mutate().setAlpha(66);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            super.setCompoundDrawablesRelativeWithIntrinsicBounds(left, top, right, bottom);
        } else {
            super.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);
        }

    }



    public int getPosition() {
        return mPosition;
    }
}

And ic_expand_more_black_18dp.png是这样的图像:

Layout:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textColorHint="@color/gray_text_hint"
        app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout.Dark">

        <yourpackage.AutoCompleteDropDown
            android:id="@+id/edtBloodType"
            style="@style/edt_dark"
            android:hint="Blood Type"
            android:inputType="textNoSuggestions" />
    </android.support.design.widget.TextInputLayout>

结果(您可以为 AutoCompleteTextView 设置适配器)

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

像编辑文本一样的旋转器 的相关文章

随机推荐

  • 仅在发布配置中启用 ARC lite 的应用程序在第二代 iPod 上崩溃

    我有一个启用了 ARC lite 的应用程序 启用了 ARC 无需将弱引用归零 Apple LLVM 4 0 部署目标设置为 iOS 4 0 它已在 iOS 4 0 至 5 1 1 上进行了测试 当我使用调试构建并通过 Xcode 安装时
  • SQL Server 2014 备份到 2012

    有没有工具可以将 SQL Server 2014 数据库转换为 2012 I tried 生成脚本但是生成的包含数据的脚本太大 SQL Server Management Studio没有执行它 我需要同时拥有架构和数据 To my kno
  • Apple 推送通知服务是否存在隐私问题?

    我一直在广泛阅读 APNS 的内容 并且很好奇是否有人熟悉 Apple 在服务器端日志记录方面的立场 为了允许推送通知 每个设备 例如 iPhone 与服务建立经过认可的加密 IP 连接 并通过此持久连接接收通知 Source https
  • PHP 不使用 ajax 将超过 91 行的表单数据插入数据库

    我试图向数据库插入超过 150 行 但发布请求仅发生 91 行 并且控制台日志显示内部服务器错误 插入91行后出现错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 1 行 附近使用的正确语法 我的 H
  • 为什么java 7不能使用菱形运算符和多重catch语句

    嗯 使用 Java 7 1 7 0 67 并将项目语言级别设置为 7 Diamonds ARM multi catch 我的代码如下 使用 maven 构建时抛出编译错误的行 private Map
  • 在 Galaxy S 上无法从相机获取全尺寸图像

    我在从 Samsung Galaxy S 上的内置相机应用程序捕获图像时遇到问题 我的应用程序上有一个按钮 按下该按钮即可启动相机 ContentValues values new ContentValues values put Imag
  • 如何在 woocommerce 中自动发送带有立即付款链接的发票?

    当客户在 woocommerce 中订购产品时 我想通过电子邮件自动发送带有结账链接的发票 尽管可以手动发送电子邮件 You can override https docs woocommerce com document template
  • 安装“Cairocffi”失败

    我正在使用 python3 并且我正在尝试安装 凯罗菲 在Ubuntu上 为此 我已成功安装 蟒蛇开发 libffi 开发 cffi 但是当我尝试安装 cairocffi 时pip install cairocffi I got File
  • 为什么这个 dos 命令在 python 中不起作用?

    我尝试将批处理文件中的一些 dos 命令移至 python 中 但出现此错误 对于以下语句 文件名 目录名或卷标语法不正确 subprocess Popen rd s q ProcessControlSimulator bin shell
  • Scalastyle 布尔表达式可以简化

    Scalastyle intellij 2016 1默认值 表示这个布尔表达式可以简化 val t Option true val f Option false if t contains true f contains false pri
  • 我可以让 javascript 同时做两件事吗?

    我有一个奇怪的需求 我想在 javascript 中执行以下操作 当一个函数被调用时我想要 更改 DIV 的颜色并 然后 1 2 秒后我想 把它改回来 与 1 同时 我会 比如进行 Ajax 调用 电话 通常需要一秒钟 换句话说 我希望步骤
  • 木偶在循环中添加数组元素

    我想要这样的东西 ssl domains dev mydomain com admin api web each site tom jeff harry each developer ssl domains lt lt site devel
  • 使用 Chef 时主管打开文件限制不会改变

    我正在机器上修改 etc security limits conf 然后在 Chef 配方中安装 Supervisor 菜谱运行完成后 如果我运行cat proc
  • DNSPython 异步解析超时,但同步解析不会超时

    我在 Python 3 9 7 x64 dnspython 2 1 0 和 Windows 10 21H1 上执行了测试 问题很简单 dns resolver Resolver 工作正常但不dns asyncresolver Resolve
  • 使用相同的密钥签署两个应用程序

    我构建了两个应用程序 第一个应用程序 com pakname pak1 第二个应用程序使用 com pakname pak2 包名称 然后我得到了一个密钥 mykey keystore 如果我使用相同的密钥对这两个应用程序进行签名并将它们发
  • 在手机上自动播放视频? Facebook Home 做到了。我缺少什么?

    我正在尝试将视频添加到我的主页来代替滑块 我了解移动设备如何以及为何禁用自动播放 但是 FacebookHome 和 Youtube 将在移动设备上自动播放 https bg bg facebook com home https bg bg
  • 在 Firemonkey 中获取应用程序路径

    因此 在 VCL 中 可以使用以下代码行来检索应用程序路径 ExtractFilePath Application ExeName 我尝试了同样的 Firemokey 我注意到 ExeName 不再可用 我可以使用什么代码来替代这个 尝试使
  • 导轨型号

    我有一个名为 test rb 的模型 当我在控制器中使用 tests Test new 时 出现以下错误 有人可以告诉我如何解决这个问题吗 测试 模块的未定义方法 新 如果您认为存在命名冲突 则看起来 test 已经是名为 Test 的模块
  • 如何使用-webkit-animation - 向外环创建脉冲效果

    我找到了这篇文章 http www zurb com article 221 css3 animation will rock your world http www zurb com article 221 css3 animation
  • 像编辑文本一样的旋转器

    我有一个带有 TextInputLayout TextInputEditText 和微调器的表单 我想要微调器高度换行文本 但下拉列表中有大项目 问题是微调器的高度取决于下拉项的高度 simple spinner dropdown item