在 EditText 中仅隐藏数字以获取 pin 码 (Android)
Hide only numbers in EditText for pin-code (Android)
我的应用程序中有 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
跳转到 another/next View
。或者你可以保留一个 EditText
和 numberSigned
,但在输入所有数字到星号的文本期间交换(将数字保留在一些分隔值中,因为 editText.getText
将 return 你只用星号)
我的应用程序中有 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
跳转到 another/next View
。或者你可以保留一个 EditText
和 numberSigned
,但在输入所有数字到星号的文本期间交换(将数字保留在一些分隔值中,因为 editText.getText
将 return 你只用星号)