我有一个EditText
字段,用户只能输入六位数字。当EditText
被聚焦时,它应该提示用户他只能输入六位数。
这个想法是以灰色显示剩余数字,如下所示:
当用户输入数字时,它显示如下:
(红色垂直条表示光标。)
光标不应位于两个图像中当前位置的后面;灰色数字应该只是可见的,不应该是可选择的。
所以实际上我想设置占位符文本,但在用户输入时保留占位符文本的一部分。
我从设计支持库中读到了TextInputLayout
类,但我不知道如何实现上述想法。
怎么做?
答案 0 :(得分:2)
我只会给你一个想法,所以实施取决于你。在
中创建TextWatcheronTextChanged()
计算用户编写的位数,并根据此数字创建用零填充的字符串。在它之后,使零成为不同的颜色
Spannable textWithTintedZeros = new SpannableString(paddedString);
textWithTintedZeros.setSpan(new ForegroundColorSpan(yourGrey), firstZeroIndex, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
editText.setText(textWithTintedZeros);
最后将选择设置为零之前
editText.setSelection(indexBeforeFirstZero);
不要忘记阻止更改光标位置。我认为可以用
完成View.OnKeyListener
答案 1 :(得分:0)
您可以在edittext上添加一个重力正确的TextView。然后在edittext的监听器(ontextchanged)中修改TextView。
我不知道你是否只能使用EditText。