开篇
本次给大家分享的是支持拖动、缩放的自定义原生软键盘。不同于市面上的自定义软件,此键盘完全是原生实现。为什么要写这款自定义键盘,是因为在项目开发过程中,发现在弹窗输入框中调用系统输入法的时候,输入框会别严重挤上去,特别处于横屏界面时,键盘所占有的空间很大,留给用户的操作空间太小,压缩了用户的体验性。当前还没有发布到jCenter
中心,如果有类似需求,请到GitHub
下载该库至项目中,按需求做相应调整。使用该库,请注明出处,谢谢!(后期优化后会发布到jCenter
中心)
扫码下载体验
传送门:https://github.com/JustinRoom/KeyboardDemo
效果图
数字键盘 字母键盘 字母+数字混合键盘 被拖至底部的混合键盘使用方法
使用要点:
- a、创建KeyBoardView实例(支持xml布局文件):
KeyBoardView keyboardView = new KeyBoardView(context);
- b、管理所有需要使用该自定义键盘的
EditText
:
//如果view是ViewGroup,自动查找该ViewGroup树下的所有EditText并加入管理
public void addAllInputView(View view)
//添加某一特定的EditText
public void addInputView(@NonNull EditText editText)
public void removeAllInputView(View view)
public void removeInputView(@NonNull EditText editText)
- c、把KeyBoardView添加到
Activity
、Fragment
、DialogFragment
所在的Window
中:
KeyUtils工具已提供了一个快速添加的方法。
KeyUtils.init(getActivity().getWindow(), keyboardView);
- 1、Activity、Fragment。这里以
Fragment
为例:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_keyboard, container, false);
keyboardView = new KeyBoardView(root.getContext());
keyboardView.addAllInputView(root);
KeyUtils.init(getActivity().getWindow(), keyboardView);
root.findViewById(R.id.btn_toggle).setOnClickListener(this);
root.findViewById(R.id.btn_dialog).setOnClickListener(this);
return root;
}
@Override
public void onResume() {
super.onResume();
keyboardView.onResume();
}
@Override
public void onPause() {
Log.i("KeyboardFragment", "onPause: ");
keyboardView.onPause();
super.onPause();
}
@Override
public void onDestroy() {
keyboardView.onDestroy();
super.onDestroy();
}
微信:eoy9527
、QQ:1006368252
。
篇尾
人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想。 —— 爱献生
网友评论