1

我想要的是

  1. 一个简单的 EditText。用户应该能够在任何时间点输入文本。

  2. 单击此 EditText,弹出窗口应锚定到 EditText。

  3. 此 EditText 的 onClick,如果已显示弹出窗口,则关闭弹出窗口。

  4. 此弹出窗口将包含一个项目列表(我决定并没有过滤)单击,EditText 将被单击的项目填充。

  5. 当我开始输入时,弹出窗口应该消失。

  6. 我应该能够设置下拉列表的动画。

我的选择是什么

显然,AutoCompleteTextView。自定义 AutoCompleteTextView 后效果很好。但是有两个问题?

我能够完成第 1、2、4 和 5 点。如何绕过第 3 和第 5 点?

由于没有任何工作...

我想我可以只放置一个编辑文本并显示一个弹出窗口。:)

但这完全失败了……

我只是尝试做简单的方法。我添加了一个 EditText。然后我创建了一个 PopupWindow 类并在其中添加了一个列表视图。然后我将它锚定到我的 EditText。现在问题又开始了——

  1. 我单击 EditText。弹出窗口出现。占据所有焦点,键盘消失。绝对不是我想要的。所以我使弹出窗口无法聚焦。

  2. 现在我单击 EditText,出现弹出窗口。不占重点。所以键盘保持输入。就像我想要的那样完美。但是当我单击 ListView 中的列表项时,它什么也不做。为什么?对焦不准!

那我现在该怎么办?我该走哪条路?

4

1 回答 1

0

对于 3. 你可以创建一个 onFocusChange 监听器,或者和 onClickListener 并显式调用_autoCompleteView.dismissDropDown();。您可以使用isPopupShowing()它来查看它是否已经显示并在这种情况下手动关闭它。

对于 5. 你只是做同样的事情,但你做了_autoCompleteView.registerDataSetObserver并将该逻辑放在onChanged()事件中,或者可能addTextChangedListener放在你的 autoCompleteTextView 中。

我不完全确定这是否是您正在寻找的功能,但这个线程现在已经快一年了,所以它可能对将来的某人有所帮助。

于 2013-02-07T19:46:16.217 回答