检查 pin 为假后如何从 GoodieBag Pinview 中删除输入?
How to remove inputs from GoodieBag Pinview after checking the pin is false?
我在我的应用程序中使用 GoodieBag Pinview 通过 pin 登录。输入四位数密码后,它会验证密码。但是在验证输入错误后,光标停留在引脚视图的最后一个框。我需要从 pinview 框中删除所有条目,如果输入的 pin 错误,则光标移动到第一个框。
我还有另一种设置 pin 的情况。我有两个 pinview,一个用于 enter-pin,另一个用于 confirm-pin。在 enter-pin 中输入值后,我需要自动将光标移动到 confirm-pin first 框。但它不会发生。我必须先手动点击 confirm-pin 方框来设置 pin。
我该如何解决这个问题?
没有从 pinView 中删除值的默认方法。但是我覆盖了pinview的删除键按下事件来清除pinview中的值。
试试这个
otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));
以上代码会删除pinview当前聚焦的值。如果你想清除所有值循环直到你的 Pin Length.
我试过这样的东西
for (int i = 0;i < otpPinView.getPinLength();i++) {
otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));
}
对于场景 2:
试试这个
pinview1.setPinViewEventListener(new Pinview.PinViewEventListener() {
@Override
public void onDataEntered(Pinview pinview, boolean fromUser) {
pinview2.requestFocus();
}
});
已编辑
注意:Pinview是一组edittext。因此,如果您希望光标在第一个编辑文本的第一个框中可见,您需要将 requestFocus
方法设置为 pinview child。
您可以试试下面的代码
pinview1.setPinViewEventListener(new Pinview.PinViewEventListener() {
@Override
public void onDataEntered(Pinview pinview, boolean fromUser) {
pinview2.getChildAt(0).requestFocus(); //0 is index of child.
}
});
清除pinview的简单易行方法
if(codeinvalid){
//call that method to clear pinview
clearPinViewChild();
}
方法
private void clearPinViewChild() {
for (int i = 0; i < pin.getChildCount() ; i++) {
EditText child = (EditText) pin.getChildAt(i);
child.setText("");
}
}
我在我的应用程序中使用 GoodieBag Pinview 通过 pin 登录。输入四位数密码后,它会验证密码。但是在验证输入错误后,光标停留在引脚视图的最后一个框。我需要从 pinview 框中删除所有条目,如果输入的 pin 错误,则光标移动到第一个框。
我还有另一种设置 pin 的情况。我有两个 pinview,一个用于 enter-pin,另一个用于 confirm-pin。在 enter-pin 中输入值后,我需要自动将光标移动到 confirm-pin first 框。但它不会发生。我必须先手动点击 confirm-pin 方框来设置 pin。
我该如何解决这个问题?
没有从 pinView 中删除值的默认方法。但是我覆盖了pinview的删除键按下事件来清除pinview中的值。
试试这个
otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));
以上代码会删除pinview当前聚焦的值。如果你想清除所有值循环直到你的 Pin Length.
我试过这样的东西
for (int i = 0;i < otpPinView.getPinLength();i++) {
otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));
}
对于场景 2:
试试这个
pinview1.setPinViewEventListener(new Pinview.PinViewEventListener() {
@Override
public void onDataEntered(Pinview pinview, boolean fromUser) {
pinview2.requestFocus();
}
});
已编辑
注意:Pinview是一组edittext。因此,如果您希望光标在第一个编辑文本的第一个框中可见,您需要将 requestFocus
方法设置为 pinview child。
您可以试试下面的代码
pinview1.setPinViewEventListener(new Pinview.PinViewEventListener() {
@Override
public void onDataEntered(Pinview pinview, boolean fromUser) {
pinview2.getChildAt(0).requestFocus(); //0 is index of child.
}
});
清除pinview的简单易行方法
if(codeinvalid){
//call that method to clear pinview
clearPinViewChild();
}
方法
private void clearPinViewChild() {
for (int i = 0; i < pin.getChildCount() ; i++) {
EditText child = (EditText) pin.getChildAt(i);
child.setText("");
}
}