前言
最近Android开发中用到了自定义数字键盘,网上找的demo不能满足我的需求,比如删除和插入的时候只能在最后删除和插入,不能通过滑动键盘来移动光标。所以现在完成后把它总结写出来。
概述
主要实现以下功能:
(1)只有数字键,包括没有标点符号。
(2)可以在任意点插入和删除数字。
(3)可以通过手指左右滑动键盘来改变光标位置。
(4)输入框右边删除图标和按钮可随着内容有无变化。
(5)每三个数字空一格,输入框最多输入13个字符(包括空格)。
先上运行效果(请忽略UI -_-):
步骤:
1、新建一个KeyboardView.java文件。用来自定义所需要的键盘。
首先初始化绑定布局文件。
private void init(Context context, AttributeSet attrs, int defStyleAttr) {
LayoutInflater.from(context).inflate(R.layout.layout_key_board, this);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
rl_back=findViewById(R.id.rl_back);
rl_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) { // 点击关闭键盘
dismiss();
}
});
initData();
initView();
initAnimation();
}
填充数据(如果需要标点符号,则在i==9中填充即可)
private void initData() {
keyboardWords = new ArrayList<>();
for (int i = 0; i < 12; i++) {
if (i < 9) {
keyboardWords.add(String.valueOf(i + 1));
} else if (i == 9) {
keyboardWords.add("");
} else if (i == 10) {
keyboardWords.add("0");
} else {
keyboardWords.add("");
}
}
}
设置适配器
private void initView() {
int spanCount = 12;
recyclerView.setLayoutManager(new GridLayoutManager(getContext(),