DownEditTextView【自定义Edittext对Android 软键盘向下的监听】
程序员文章站
2023-04-05 21:11:07
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能。基本上和参考资料相同。 效果图 代码分析 自定义EditText子类,然后重写onKeyPreIme方法 使用步骤 一、项目组织结构图 注意事项: 1、 导入类文件后需要c ......
版权声明:本文为haiyuking原创文章,转载请注明出处!
前言
记录自定义edittext控件实现监听软键盘隐藏事件的功能。基本上和参考资料相同。
效果图
代码分析
自定义edittext子类,然后重写onkeypreime方法
@override public boolean onkeypreime(int keycode, keyevent event) { if (keycode == keyevent.keycode_back && event.getaction() == 1) { log.i("downedittextview", "键盘向下 "); super.onkeypreime(keycode, event); if(onkeyboardhidelistener != null){ onkeyboardhidelistener.onkeyhide(keycode, event);//回调 } return false; } return super.onkeypreime(keycode, event); }
使用步骤
一、项目组织结构图
注意事项:
1、 导入类文件后需要change包名以及重新import r文件路径
2、 values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖
二、导入步骤
将downedittextview复制到项目中
package com.why.project.androidcnblogsdemo.views.customedittext; import android.annotation.suppresslint; import android.content.context; import android.util.attributeset; import android.util.log; import android.view.keyevent; import android.widget.edittext; /** * created by haiyuking * used 对android 软键盘向下的监听:https://blog.csdn.net/yxhuang2008/article/details/53822072 * android软键盘弹出和收回监听:https://blog.csdn.net/wangkai1101/article/details/79066046 */ @suppresslint("appcompatcustomview") public class downedittextview extends edittext { public downedittextview(context context) { super(context); } public downedittextview(context context, attributeset attrs) { super(context, attrs); } public downedittextview(context context, attributeset attrs, int defstyleattr) { super(context, attrs, defstyleattr); } @override public boolean onkeypreime(int keycode, keyevent event) { if (keycode == keyevent.keycode_back && event.getaction() == 1) { log.i("downedittextview", "键盘向下 "); super.onkeypreime(keycode, event); if(onkeyboardhidelistener != null){ onkeyboardhidelistener.onkeyhide(keycode, event);//回调 } return false; } return super.onkeypreime(keycode, event); } /** *键盘监听接口 */ public onkeyboardhidelistener onkeyboardhidelistener; public void setonkeyboardhidelistener(onkeyboardhidelistener onkeyboardhidelistener) { this.onkeyboardhidelistener = onkeyboardhidelistener; } public interface onkeyboardhidelistener{ void onkeyhide(int keycode, keyevent event); } }
输入框背景图片资源input_box_send.9.png
三、使用方法
在布局文件中引用这个自定义控件【注意,实际项目中需要更改downedittextview的完整路径】
<?xml version="1.0" encoding="utf-8"?> <!-- 自定义edittext的演示(监听软键盘隐藏) --> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.why.project.androidcnblogsdemo.views.customedittext.downedittextview android:id="@+id/edt_down" android:layout_width="match_parent" android:layout_height="48dp" android:inputtype="text" android:hint="演示监听软键盘隐藏功能" android:lines="1" android:background="@drawable/input_box_send" android:layout_margin="8dp" /> </linearlayout>
activity中使用
package com.why.project.androidcnblogsdemo.activity; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.view.keyevent; import android.widget.toast; import com.why.project.androidcnblogsdemo.r; import com.why.project.androidcnblogsdemo.views.customedittext.downedittextview; /** * created by haiyuking * used 自定义edittext的演示(监听软键盘隐藏) */ public class downedittextactivity extends appcompatactivity { private downedittextview mdownedittextview; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_downedittext); initviews(); initevents(); } private void initviews() { mdownedittextview = (downedittextview) findviewbyid(r.id.edt_down); } private void initevents() { mdownedittextview.setonkeyboardhidelistener(new downedittextview.onkeyboardhidelistener() { @override public void onkeyhide(int keycode, keyevent event) { toast.maketext(downedittextactivity.this,"软键盘隐藏了",toast.length_short).show(); } }); } }
混淆配置
无
参考资料
项目demo下载地址
上面已提供相关代码。