Edittext实现密码输入框
来源:互联网 发布:网络主播经纪公司注册 编辑:程序博客网 时间:2024/05/16 15:20
最近用到了两种类型的密码框,其中一类是下划线类型的,要能够实现连续输入,连续删除操作,这个要求edittext输入时焦点后移,删除时焦点前移。话不多说,直接贴代码:
输入完6位密码自动提示:
public class MainActivity extends AppCompatActivity { private UnderLineView3 mInputView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { mInputView = (UnderLineView3) findViewById(R.id.input_pwd); mInputView.setOnFinishListener(new UnderLineView3.FinishInputListener() { @Override public void onFinish(String code) { Toast.makeText(MainActivity.this, "您输入的密码为:" + code, Toast.LENGTH_LONG).show(); } }); }
其中自定义密码输入框为:
public class UnderLineView3 extends RelativeLayout implements View.OnKeyListener { private Context mContext; private EditText et_one, et_two, et_three, et_four, et_five, et_six; public UnderLineView3(Context context) { this(context, null); } public UnderLineView3(Context context, AttributeSet attrs) { this(context, attrs, 0); } public UnderLineView3(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.mContext = context; LayoutInflater.from(mContext).inflate(R.layout.cvv2_underline_view3, this); init(); } private void init() { et_one = (EditText) findViewById(R.id.et_pay1); et_two = (EditText) findViewById(R.id.et_pay2); et_three = (EditText) findViewById(R.id.et_pay3); et_four = (EditText) findViewById(R.id.et_pay4); et_five = (EditText) findViewById(R.id.et_pay5); et_six = (EditText) findViewById(R.id.et_pay6); et_one.addTextChangedListener(mTextWatcher); et_two.addTextChangedListener(mTextWatcher); et_three.addTextChangedListener(mTextWatcher); et_four.addTextChangedListener(mTextWatcher); et_five.addTextChangedListener(mTextWatcher); et_six.addTextChangedListener(mTextWatcher); et_one.setOnKeyListener(this); et_two.setOnKeyListener(this); et_three.setOnKeyListener(this); et_four.setOnKeyListener(this); et_five.setOnKeyListener(this); et_six.setOnKeyListener(this); } private TextWatcher mTextWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s.toString().length() == 1) { if (et_one.isFocused() && TextUtils.isEmpty(et_two.getText().toString())) { et_one.clearFocus(); et_two.requestFocus(); } else if (et_two.isFocused() && TextUtils.isEmpty(et_three.getText().toString())) { et_two.clearFocus(); et_three.requestFocus(); } else if (et_three.isFocused()) { et_four.requestFocus(); et_three.clearFocus(); } else if (et_four.isFocused() && TextUtils.isEmpty(et_five.getText().toString())) { et_five.requestFocus(); et_four.clearFocus(); } else if (et_five.isFocused() && TextUtils.isEmpty(et_six.getText().toString())) { et_six.requestFocus(); et_five.clearFocus(); } else if (et_six.isFocused()) { et_six.requestFocus(); } } checkInput(); } }; private void checkInput() { if (!TextUtils.isEmpty(et_one.getText().toString().trim()) && !TextUtils.isEmpty(et_two.getText().toString().trim()) && !TextUtils.isEmpty(et_three.getText().toString().trim()) && !TextUtils.isEmpty(et_four.getText().toString().trim()) && !TextUtils.isEmpty(et_five.getText().toString().trim()) && !TextUtils.isEmpty(et_six.getText().toString().trim())) { mListener.onFinish(getStr()); } } private String getStr() { return et_one.getText().toString().trim() + et_two.getText().toString().trim() + et_three.getText().toString().trim()+et_four.getText().toString().trim()+et_five.getText().toString().trim()+et_six.getText().toString().trim(); } @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DEL) { if (et_six.isFocused()) { et_five.requestFocus(); et_six.setText(""); } else if (et_five.isFocused()) { et_four.requestFocus(); et_five.setText(""); } else if (et_four.isFocused()) { et_three.requestFocus(); et_four.setText(""); } else if (et_three.isFocused()) { et_two.requestFocus(); et_three.setText(""); } else if (et_two.isFocused()) { et_one.requestFocus(); et_two.setText(""); } else if (et_one.isFocused()) { et_one.setText(""); et_one.requestFocus(); } return true; } return false; } public FinishInputListener mListener; public void setOnFinishListener(FinishInputListener listener) { this.mListener = listener; } public interface FinishInputListener { void onFinish(String code); }}
最终效果:
下载链接:密码框下载
1 0
- Edittext实现密码输入框
- 用EditText实现的 连续输入的密码框
- 用EditText实现的 连续输入的密码框
- EditText作为密码输入框,隐藏输入密码
- 自定义数字密码EditText输入框
- 自定义Android Dialog EditText 密码输入框
- Android 密码输入 EditText
- android EditText 输入密码
- Android打造带删除的EditText并且实现输入框密码显示、隐藏
- 单机版APP记住密码功能的实现及EditText的输入框背景设置
- android之EditText实现动态显示隐藏密码输入框的内容(实用)
- EditText中输入密码可见的简单实现
- android 实现EditText 密码输入显示大圆点
- EditText为密码输入设置为可见的实现
- 使用EditText的setTransformationMethod() 实现输入密码的显示,隐藏
- 监听EditText输入框 ,判断输入的密码是什么格式
- android edittext 输入密码可见
- 关于EditText输入数字密码
- 2017_NJCTF_reverse_echo_server
- 对于thinkphp唯一索引重复时出错的解决办法
- 切换标签离开当前页面时改变title提示
- 1207: [HNOI2004]打鼹鼠
- HDOJ 5675-ztr loves math【数学】
- Edittext实现密码输入框
- 九度OJ-题目1047 素数判定
- codeforces 675c[补]
- 禁止键盘动作:鼠标右键、退格键、屏蔽f1-f12功能
- c语言中的的内联(inline)函数
- 理解Java对象序列化
- [数学](JZOJ)【普及模拟】数列
- TCP拥塞控制
- 3.11 列出完数