我有四个用于密码的EditTexts,当我输入值时,它会自动移动到下一个edittext。我正在关注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();
}
}
});
答案 0 :(得分:0)
设置systemctl start