在Android中的EditText输入时,需要占位符提示吗?

8
我有一个名为 EditText 的字段,用户只能输入六位数字。当焦点在 EditText 上时,应提示用户只能输入六位数字。
想法是以灰色显示剩余数字,如下所示: Hint for remaining digits 当用户输入数字时,它会显示为这样: Hint for remaining digits (红色竖线表示光标。)
两个图像中光标不应该在其当前位置的后面;灰色数字应该仅可见,不能被选择。
因此,实际上我想设置一个占位符文本,但在用户输入时保留部分占位符文本。
我了解到 Design Support 库中的 TextInputLayout 类,但我不知道如何实现上述想法。
如何做到这一点?

你实现了这个行为吗?我的意思是没有选择灰色符号,也没有光标在它们上面。谢谢回答。 - Anton Shkurenko
2个回答

3

我会给你提供一个想法,具体实现取决于你。创建一个TextWatcher,在其中

onTextChanged()

统计用户输入的数字数量,根据数字数量创建一个用零填充的字符串。然后将这些零变成不同的颜色。

Spannable textWithTintedZeros = new SpannableString(paddedString);
textWithTintedZeros.setSpan(new ForegroundColorSpan(yourGrey), firstZeroIndex, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
editText.setText(textWithTintedZeros);

最后,将选择设置为在零之前。
editText.setSelection(indexBeforeFirstZero);

不要忘记阻止更改光标位置。我认为可以通过以下方式实现:
View.OnKeyListener

我要尝试一下。请注意,当我们使用setText()onTextChanged()内设置EditText的文本时,onTextChanged()方法会被递归调用。 - MC Emperor
@MCEmperor 没错,flag有帮助。如果(!inEdit){ inEdit = true; ... inEdit = false;} - Yaroslav
是的,我也在想着完全一样的事情。;-) - MC Emperor

0
你可以在EditText上方添加一个gravity为right的TextView。然后在EditText的监听器(ontextchanged)中修改该TextView的内容。
我不知道是否只使用EditText就能实现这个功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接