android - 仅在 EditText 中隐藏数字以获取 pin 码 (Android)
问题描述
我在 myApp 中有 EditText 和这个 TextWatcher 和 numberSigned 输入类型:
TextWatcher() {
@Override
public void afterTextChanged(Editable s)
{
codeinput.removeTextChangedListener(this);
String text = s.toString();
text = text.replaceAll("[^0-9]", "");
if (text.length() > 4)
text = text.substring(0, 4);
String newText = "";
for (char c : text.toCharArray())
newText += c + " ";
text = newText.trim();
String substring = "_ _ _ _".substring(text.length());
text += substring;
int length = text.replaceAll("([ ]?[_])+$", "").length();
codeinput.setText(text);
codeinput.setSelection(length);
codeinput.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
};
当我将输入类型从 numberSigned 更改为 numberPassword - 我的 EditText 中的所有符号都被隐藏时,我只想隐藏数字。我该怎么做?
解决方案
我担心密码类型字段隐藏了所有字符,您对此无能为力
但考虑使用setLetterSpacing并且不要使用空格(自 API21 以来可用的方法)
如果您需要较低的 API 支持并且仍想使用,numberPassword
那么您必须设置 4 EditText
s -editText.requestFocus
用于跳转到另一个/下一个View
。或者您可以保留一个EditText
,numberSigned
但在输入所有数字到星号的文本期间进行交换(将数字保留在某个单独的值中,因为editText.getText
只会返回星号)
推荐阅读
- docker - 将使用 docker 的 sh 脚本转换为 bat 脚本
- python - 无法在我的 Ubuntu 机器上安装“xlwings”
- python-3.x - Spark 中 Keras 模型的包装器
- javascript - Javascript:当我多次按下它时询问如何完全取消警报我应该取消该函数的所有调用
- android - How to pass arguments for intermediate destinations, that are recreated for a back stack when launching a deep link with navigation component?
- javascript - Comparing that an object belongs to other object
- assembly - Debugging my NASM x86_64 assembly code and the bug itself
- ios - Get subscription price from a SKPaymentTransaction
- ffmpeg - 如何使用 ffmpeg 确定传入 RTMP 流的分辨率?
- google-cloud-sdk - 谷歌的云 SDK 不返回`createTime`