Android 仿微信支付密码输入框
Android仿微信支付密码输入框
最近在项目中遇到一个类似微信支付的密码输入框的需求,具体的实现要求如下:
* 需要有6个输入框,每个输入框可以输入1位数字* 每个输入框都需要有一个小圆点作为占位符* 当用户输入完毕后,需要将所有输入框的内容合并成一个字符串,并且进行校验(例如:长度是否为6位等)
* 需要有一个清除按钮,可以清除所有输入框的内容实现思路
由于TextView在处理软键盘输入的时候会比较繁琐,所以我们决定使用EditText来实现这个需求。我们可以通过设置EditText的inputType属性来限制用户只能输入数字。
```xml android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> ``` 实现步骤 1. 布局文件首先,我们需要在布局文件中添加6个EditText和一个Button。 ```xml android:layout_height="wrap_content"> android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> ``` 2. Java代码然后,我们需要在Java代码中实现输入框的内容合并和校验,以及清除按钮的点击事件。 ```javapublic class MainActivity extends AppCompatActivity { private EditText et1, et2, et3, et4, et5, et6; private Button btnClear; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1 = findViewById(R.id.et1); et2 = findViewById(R.id.et2); et3 = findViewById(R.id.et3); et4 = findViewById(R.id.et4); et5 = findViewById(R.id.et5); et6 = findViewById(R.id.et6); btnClear = findViewById(R.id.btnClear); btnClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { et1.setText(""); et2.setText(""); et3.setText(""); et4.setText(""); et5.setText(""); et6.setText(""); } }); } public void onInputChanged(View view) { String input = et1.getText().toString() + et2.getText().toString() + et3.getText().toString() + et4.getText().toString() + et5.getText().toString() + et6.getText().toString(); if (input.length() ==6 && input.matches("d+")) { Toast.makeText(this, "输入正确", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "输入错误", Toast.LENGTH_SHORT).show(); } } } ``` 3. 布局文件中的小圆点最后,我们需要在布局文件中添加一个小圆点作为占位符。 ```xml android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:textSize="24sp" /> android:layout_width="10dp" android:layout_height="10dp" android:src="@drawable/ic_circle" /> ``` 总结 通过以上步骤,我们可以实现一个类似微信支付的密码输入框。这个输入框有6个EditText,每个EditText可以输入1位数字,且有一个小圆点作为占位符。当用户输入完毕后,可以将所有输入框的内容合并成一个字符串,并进行校验(例如:长度是否为6位等)。最后,还可以添加一个清除按钮,可以清除所有输入框的内容。