版权声明:本文为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等),如果项目中存在,则复制里面的内容,不要整个覆盖
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); } }
<?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>
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(); } }); } }
无
上面已提供相关代码。
如对本文有疑问, 点击进行留言回复!!
android RecyclerView checkbox复用解决
Android Q Input (1) -- InputManagerService启动
android -- ndk (stack corruption detected)
Android Span富文本图文混排 - ImageSpan(图文垂直居中)
网友评论