【发布时间】:2017-12-05 12:39:52
【问题描述】:
我有四个密码编辑文本,当我输入值时,它会自动移动到下一个编辑文本。我正在关注How to change the focus to next edit text in android?,它工作正常,但在第二个文本中输入数字后,它不会更改为密码,它显示为数字,直到我触摸 EditText 字段。
我已设置 android:inputType="numberPassword"。
但它显示的是数字,当我触摸屏幕或按下所有字段显示为密码时,它作为密码工作。
但在触摸或后按编辑文本字段之前,它始终显示数字。
我的要求是,当我输入它时,它应该将字符显示为密码而不是数字,但在按下它之前显示为数字。
请指导我。
下面给出了我的 xml 用于一个 EditText 的位置,并且有四个编辑文本。
<EditText
android:id="@+id/cnf_pin_first_edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/pin_content_desc"
android:inputType="numberPassword"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp android:background="@drawable/text_box_underline_selector"
android:textColor="@color/black" />
下面给出了我的三个编辑文本的代码
final StringBuilder sbForFirstText = new StringBuilder();
setPinFirstDigitEditText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if (sbForFirstText.length() == 0 & setPinFirstDigitEditText.length() == 1) {
sbForFirstText.append(s);
setPinFirstDigitEditText.clearFocus();
setPinSecondDigitEditText.requestFocus();
setPinSecondDigitEditText.setCursorVisible(true);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (sbForFirstText.length() == 1) {
sbForFirstText.deleteCharAt(0);
}
}
public void afterTextChanged(Editable s) {
if (sbForFirstText.length() == 0) {
setPinFirstDigitEditText.requestFocus();
}
}
});
final StringBuilder sbSecondText = new StringBuilder();
setPinSecondDigitEditText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if (sbSecondText.length() == 0 & setPinSecondDigitEditText.length() == 1) {
sbSecondText.append(s);
setPinSecondDigitEditText.clearFocus();
setPinThirdDigitEditText.requestFocus();
setPinThirdDigitEditText.setCursorVisible(true);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (sbSecondText.length() == 1) {
sbSecondText.deleteCharAt(0);
}
}
public void afterTextChanged(Editable s) {
if (sbSecondText.length() == 0) {
setPinSecondDigitEditText.requestFocus();
}
}
});
final StringBuilder sbThirdText = new StringBuilder();
setPinThirdDigitEditText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if (sbThirdText.length() == 0 & setPinThirdDigitEditText.length() == 1) {
sbThirdText.append(s);
setPinThirdDigitEditText.clearFocus();
setPinForthDigitEditText.requestFocus();
setPinForthDigitEditText.setCursorVisible(true);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
if (sbThirdText.length() == 1) {
sbThirdText.deleteCharAt(0);
}
}
public void afterTextChanged(Editable s) {
if (sbThirdText.length() == 0) {
setPinThirdDigitEditText.requestFocus();
}
}
});
【问题讨论】:
-
发布您的 xml,以获得更多说明
-
查看我的更新答案
标签: android android-edittext passwords