TV中一款自定义的软键盘(覆盖了系统原生的键盘)
2017-11-17 10:27
225 查看
最近做公司的项目,用到一款自定义的软键盘,觉得挺好看的,在这里分享出来,给网友们借鉴下,希望对大家有用~
效果图如下:
![](https://img-blog.csdn.net/20171117102405614?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG93bmxvYWRuYW1l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20171117102510175?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG93bmxvYWRuYW1l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
核心代码如下:
private void showKeyboard(EditText etContent) {
this.inputContent = etContent;
View content = View.inflate(this, R.layout.keyborad, null);
ll_key_number_page_1 = (LinearLayout) content.findViewById(R.id.ll_keyboard_number_page_1);
ll_key_number_page_2 = (LinearLayout) content.findViewById(R.id.ll_keyboard_number_page_2);
ll_key_char_lower = (LinearLayout) content.findViewById(R.id.ll_keyboard_lower_char);
ll_key_char_upper = (LinearLayout) content.findViewById(R.id.ll_keyboard_upper_char);
for (int i = 1; i <= 122; i++) {
int resId = getResourdIdByResourdName("tv_" + i);
if (resId > 0) {
View view = content.findViewById(resId);
if (view != null) {
view.setOnClickListener(this);
}
}
}
for (int i = 1; i <= 4; i++) {
int ivResId = getResourdIdByResourdName("iv_" + i);
final ImageView iv_empty = (ImageView) content.findViewById(ivResId);
iv_empty.setOnClickListener(this);
iv_empty.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
iv_empty.setBackground(getResources().getDrawable(R.drawable.key_focus));
iv_empty.setImageDrawable(getResources().getDrawable(R.drawable.empty_focus));
} else {
iv_empty.setBackground(getResources().getDrawable(R.drawable.key));
iv_empty.setImageDrawable(getResources().getDrawable(R.drawable.empty_unfocus));
}
}
});
}
for (int i = 1; i <= 2; i++) {
int ivResId = getResourdIdByResourdName("iv_character_" + i);
final ImageView iv_char = (ImageView) content.findViewById(ivResId);
iv_char.setOnClickListener(this);
iv_char.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
iv_char.setBackground(getResources().getDrawable(R.drawable.key_focus));
} else {
iv_char.setBackground(getResources().getDrawable(R.drawable.key));
}
}
});
}
windows = new PopupWindow(content, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
// !!!重要监听返回键
windows.setBackgroundDrawable(new BitmapDrawable());
windows.showAsDropDown(etContent, 0, 0);
key_char = getString(R.string.key_char_value);
key_character = getString(R.string.key_character_value);
key_page = getString(R.string.key_page_value);
key_lower = getString(R.string.key_character_lower_value);
key_upper = getString(R.string.key_character_upper_value);
key_empty = getString(R.string.key_empty_value);
key_del = getString(R.string.key_del_value);
key_finish = getString(R.string.key_finish_value);
}
具体的源码已经上传到CSDN,可以自行下载,地址如下:
http://download.csdn.net/download/downloadname/10122408
效果图如下:
核心代码如下:
private void showKeyboard(EditText etContent) {
this.inputContent = etContent;
View content = View.inflate(this, R.layout.keyborad, null);
ll_key_number_page_1 = (LinearLayout) content.findViewById(R.id.ll_keyboard_number_page_1);
ll_key_number_page_2 = (LinearLayout) content.findViewById(R.id.ll_keyboard_number_page_2);
ll_key_char_lower = (LinearLayout) content.findViewById(R.id.ll_keyboard_lower_char);
ll_key_char_upper = (LinearLayout) content.findViewById(R.id.ll_keyboard_upper_char);
for (int i = 1; i <= 122; i++) {
int resId = getResourdIdByResourdName("tv_" + i);
if (resId > 0) {
View view = content.findViewById(resId);
if (view != null) {
view.setOnClickListener(this);
}
}
}
for (int i = 1; i <= 4; i++) {
int ivResId = getResourdIdByResourdName("iv_" + i);
final ImageView iv_empty = (ImageView) content.findViewById(ivResId);
iv_empty.setOnClickListener(this);
iv_empty.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
iv_empty.setBackground(getResources().getDrawable(R.drawable.key_focus));
iv_empty.setImageDrawable(getResources().getDrawable(R.drawable.empty_focus));
} else {
iv_empty.setBackground(getResources().getDrawable(R.drawable.key));
iv_empty.setImageDrawable(getResources().getDrawable(R.drawable.empty_unfocus));
}
}
});
}
for (int i = 1; i <= 2; i++) {
int ivResId = getResourdIdByResourdName("iv_character_" + i);
final ImageView iv_char = (ImageView) content.findViewById(ivResId);
iv_char.setOnClickListener(this);
iv_char.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
iv_char.setBackground(getResources().getDrawable(R.drawable.key_focus));
} else {
iv_char.setBackground(getResources().getDrawable(R.drawable.key));
}
}
});
}
windows = new PopupWindow(content, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
// !!!重要监听返回键
windows.setBackgroundDrawable(new BitmapDrawable());
windows.showAsDropDown(etContent, 0, 0);
key_char = getString(R.string.key_char_value);
key_character = getString(R.string.key_character_value);
key_page = getString(R.string.key_page_value);
key_lower = getString(R.string.key_character_lower_value);
key_upper = getString(R.string.key_character_upper_value);
key_empty = getString(R.string.key_empty_value);
key_del = getString(R.string.key_del_value);
key_finish = getString(R.string.key_finish_value);
}
具体的源码已经上传到CSDN,可以自行下载,地址如下:
http://download.csdn.net/download/downloadname/10122408
相关文章推荐
- Android软键盘弹出时使布局上移,避免软键盘覆盖提交等按钮
- IOS开发之自定义系统弹出键盘上方的view(转载)
- IOS开发之自定义系统弹出键盘上方的view(转载)
- android自定义软键盘名字以及监听键盘事件
- android 自定义系统键盘
- 两种自定义系统弹出键盘上方的view
- 获取iOS系统emoji动画,并自定义emoji键盘
- Android EditText 使用自定义键盘,隐藏系统键盘,保留光标
- 29. IOS系统原生富文本 自定义Label颜色
- Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。 那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的减少
- 自定义键盘切换到系统键盘时textField中的内容被清空了
- 安卓自定义控件,禁止弹出系统软键盘和第三方软键盘
- android 自定义View在弹出的软键盘之上,以及测量软键盘高度和监听软键盘状态
- 两种自定义系统弹出键盘上方的view
- IOS开发之自定义系统弹出键盘上方的view
- 5.17学习内容 android判断软键盘状态、系统键盘监控、生成中间logo的二维码
- 通过settings.db自定义Android系统默认设置:SHOW_IME_WITH_HARD_KEYBOARD 默认物理键盘与软键盘同时使用
- 最近刚为公司完成的一款监视的小工具软件!用DELPHI 7 写的,可以从后台监控系统﹑键盘﹑鼠标﹑屏幕以及文件与目录!有源码!
- iOS系统键盘和自定义键盘的切换
- Android客户端之“微服私访”App的系统学习(七)XRecyclerView快速实现列表界面+自定义Search输入框,软键盘搜索按钮监听+TextView部分样式改变