小编Max*_*i66的帖子

如何在android中使用自动完成功能将材料设计芯片添加到输入字段?

我正在尝试使用 AutoCompleteTextView 实现 Material Design Chips,以便在用户单击自动完成建议(如 Gmail 收件人芯片)时在输入字段中添加联系人芯片。

可以在Material Design 网站上看到所需的行为。

我决定从头开始在我的项目中与 AutoCompleteTextView 一起实现 Chips,没有外部库。但是,我没有找到任何说明如何做到这一点的指南。

我尝试创建一个独立的 ChipDrawable,然后将其添加到 AutoCompleteTextView 中,如下所示:

布局

<chip
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:chipIcon="@drawable/ic_avatar_circle_24"
    android:text="@string/contact_name"/>
Run Code Online (Sandbox Code Playgroud)

Java代码

ChipDrawable chip = ChipDrawable.createFromResource(getContext(), R.xml.standalone_chip);

chip.setBounds(0, 0, chip.getIntrinsicWidth(), chip.getIntrinsicHeight());
DrawableMarginSpan span = new DrawableMarginSpan(chip, 25);

Editable text = editText.getText();
text.setSpan(span, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有按预期工作。首先,我不能添加更多的芯片。此外,芯片的样式非常奇怪(高度太大,未居中)。

那么如何使用 Material Design Input Chips 创建 Gmail 或 SMS 应用程序中的 Contact Chips 呢?也许有人知道一些实施指南?

提前致谢,您的帮助将不胜感激!

android autocompletetextview material-design android-chips material-components

9
推荐指数
1
解决办法
3099
查看次数