自定义身份证输入法, 默认限制输入长度和数字,
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.cxystyle:IDInputMethod:1.0.0'
}
<com.cxystyle.idinputmethod.IDInputEditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<com.cxystyle.idinputmethod.IDInputMethod
android:id="@+id/idinputview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/keyboard_background"
android:focusable="true"
android:focusableInTouchMode="true"
android:keyBackground="@drawable/key_background"
android:keyTextColor="@color/keyboard_key_text_color"
android:keyTextSize="@dimen/keyboard_text_size"
android:paddingTop="1px"
android:shadowColor="@color/keyboard_shadow_color"
android:shadowRadius="0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
></com.cxystyle.idinputmethod.IDInputMethod>//获取输入法控件,添加EditText即可快速集成
IDInputMethod idInputView = findViewById(R.id.idinputview);
IDInputEditText idInputEditText = findViewById(R.id.et);
//推荐使用封装好了的IDInputEditText, 继承自AppCompatEditText,所以和使用EditText没有任何区别
idInputView.addEditText(idInputEditText);
//或者使用默认的edittext
idInputView.addEditText(editText);
//两种方式都不影响正常使用, 唯一的区别:
//使用EditText,当输入17位时,可以在任何位置插入X
//使用IDInputEditText 则只允许第18位才能输入X。 //调用addView 添加控件
idInputView.addView(tv);
idInputView.addView(tv2);
//添加监听,通过回调方法自己设置输入的内容
idInputView.addInputListener(new InputCallback<TextView>() {
@Override
public boolean input(Character input, int primaryCode, TextView view) {
String s = view.getText().toString();
if (primaryCode == Keyboard.KEYCODE_DELETE) {
//删除按钮
if (!TextUtils.isEmpty(s) && s.length() > 1) {
view.setText(s.substring(0, s.length() - 1));
} else {
view.setText("");
}
} else if (primaryCode == Keyboard.KEYCODE_DONE) {
//确定按钮
} else {
//1-9 X
view.setText(s + (input == null ? "" : input));
}
//返回值:true则表示自己重写所有按键效果, false则表示继续调用默认按键效果
return false;
}
});