
如上图效果:
上网查了些别人写的自定义控件,界面有些差别,自己还得重新绘画计算,干脆自己用6个edittext做算了,加些条件判断:
主要监听et的文本变化,和键盘的删除按键
1、文本长度设置最大为1嘛,然后afterTextChanged的时候判断长度是否1,是的话就更改焦点,主要是et的clearFocus()和requestFocusFromTouch(),例如et1的文本长度为1了,et1取消焦点,et2获得焦点;
2、删除按钮判断当前的et长度为0了,则应该是删除上面一个et的内容并把焦点给他
代码如下,没封装,所以很长,layout文件就自己搞了:
final Dialog dialog = new Dialog(this , R.style.CustomDialog);
View view = LayoutInflater.from(this).inflate(R.layout.dialog_admin_password, null);
final EditText et1 = view.findViewById(R.id.password1_et);
final EditText et2 = view.findViewById(R.id.password2_et);
final EditText et3 = view.findViewById(R.id.password3_et);
final EditText et4 = view.findViewById(R.id.password4_et);
final EditText et5 = view.findViewById(R.id.password5_et);
final EditText et6 = view.findViewById(R.id.password6_et);
ImageView closeIv = view.findViewById(R.id.close_iv);
et1.addTextChangedListener(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){
et1.clearFocus();
et2.requestFocusFromTouch();
String password = et1.getText().toString()+et2.getText().toString()+et3.getText().toString()+et4.getText().toString()+et5.getText().toString()+et6.getText().toString();
if(password.length()==6){
if(password.equals("123456"))
{
Intent intent1 = new Intent(LoginActivity.this, SettingActivity.class);
startActivity(intent1);
dialog.dismiss();
}else {
PhoneUtil.showCustomToast("密码错误!",2);
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
et1.requestFocusFromTouch();
}
}
}
}
});
et2.addTextChangedListener(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){
et2.clearFocus();
et3.requestFocusFromTouch();
String password = et1.getText().toString()+et2.getText().toString()+et3.getText().toString()+et4.getText().toString()+et5.getText().toString()+et6.getText().toString();
if(password.length()==6){
if(password.equals("123456"))
{
Intent intent1 = new Intent(LoginActivity.this, SettingActivity.class);
startActivity(intent1);
dialog.dismiss();
}else {
PhoneUtil.showCustomToast("密码错误!",2);
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
et1.requestFocusFromTouch();
}
}
}else {
et2.clearFocus();
et1.requestFocusFromTouch();
}
}
});
et3.addTextChangedListener(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){
et3.clearFocus();
et4.requestFocusFromTouch();
String password = et1.getText().toString()+et2.getText().toString()+et3.getText().toString()+et4.getText().toString()+et5.getText().toString()+et6.getText().toString();
if(password.length()==6){
if(password.equals("123456"))
{
Intent intent1 = new Intent(LoginActivity.this, SettingActivity.class);
startActivity(intent1);
dialog.dismiss();
}else {
PhoneUtil.showCustomToast("密码错误!",2);
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
et1.requestFocusFromTouch();
}
}
}else {
et3.clearFocus();
et2.requestFocusFromTouch();
}
}
});
et4.addTextChangedListener(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){
et4.clearFocus();
et5.requestFocusFromTouch();
String password = et1.getText().toString()+et2.getText().toString()+et3.getText().toString()+et4.getText().toString()+et5.getText().toString()+et6.getText().toString();
if(password.length()==6){
if(password.equals("123456"))
{
Intent intent1 = new Intent(LoginActivity.this, SettingActivity.class);
startActivity(intent1);
dialog.dismiss();
}else {
PhoneUtil.showCustomToast("密码错误!",2);
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
et1.requestFocusFromTouch();
}
}
}else {
et4.clearFocus();
et3.requestFocusFromTouch();
}
}
});
et5.addTextChangedListener(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){
et5.clearFocus();
et6.requestFocusFromTouch();
String password = et1.getText().toString()+et2.getText().toString()+et3.getText().toString()+et4.getText().toString()+et5.getText().toString()+et6.getText().toString();
if(password.length()==6){
if(password.equals("123456"))
{
Intent intent1 = new Intent(LoginActivity.this, SettingActivity.class);
startActivity(intent1);
dialog.dismiss();
}else {
PhoneUtil.showCustomToast("密码错误!",2);
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
et1.requestFocusFromTouch();
}
}
}else {
et5.clearFocus();
et4.requestFocusFromTouch();
}
}
});
et6.addTextChangedListener(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){
String password = et1.getText().toString()+et2.getText().toString()+et3.getText().toString()+et4.getText().toString()+et5.getText().toString()+et6.getText().toString();
if(password.length()==6)
{
if (password.equals("123456"))
{
Intent intent1 = new Intent(LoginActivity.this, SettingActivity.class);
startActivity(intent1);
dialog.dismiss();
}
else
{
PhoneUtil.showCustomToast("密码错误!", 2);
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
et1.requestFocusFromTouch();
}
}
}else {
et6.clearFocus();
et5.requestFocusFromTouch();
}
}
});
et1.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
return false;
}
});
et2.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_DEL&&event.getAction()==KeyEvent.ACTION_DOWN)
{
if (et2.getText().toString().length() == 0)
{//et2没数据点了删除键则要删除1的数据并选中1
et2.clearFocus();
et1.setText("");
et1.requestFocusFromTouch();
}
}
return false;
}
});
et3.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_DEL&&event.getAction()==KeyEvent.ACTION_DOWN)
{
if (et3.getText().toString().length() == 0)
{
et3.clearFocus();
et2.setText("");
et2.requestFocusFromTouch();
}
}
return false;
}
});
et4.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_DEL&&event.getAction()==KeyEvent.ACTION_DOWN)
{
if (et4.getText().toString().length() == 0)
{
et4.clearFocus();
et3.setText("");
et3.requestFocusFromTouch();
}
}
return false;
}
});
et5.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_DEL&&event.getAction()==KeyEvent.ACTION_DOWN)
{
if (et5.getText().toString().length() == 0)
{
et5.clearFocus();
et4.setText("");
et4.requestFocusFromTouch();
}
}
return false;
}
});
et6.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_DEL&&event.getAction()==KeyEvent.ACTION_DOWN)
{
if (et6.getText().toString().length() == 0)
{
et6.clearFocus();
et5.setText("");
et5.requestFocusFromTouch();
}
}
return false;
}
});
closeIv.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
et1.setText("");
et2.setText("");
et3.setText("");
et4.setText("");
et5.setText("");
et6.setText("");
dialog.dismiss();
}
});
dialog.setContentView(view , new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT ,WindowManager.LayoutParams.MATCH_PARENT ));
WindowManager windowManager = getWindowManager();
dialog.getWindow().setLayout(windowManager.getDefaultDisplay().getWidth() , windowManager.getDefaultDisplay().getHeight());
dialog.setCancelable(false);
dialog.show();
941

被折叠的 条评论
为什么被折叠?



