版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言记录自定义EditText控件实现监听软键盘隐藏事件的功能。基本上和参考资料相同。 效果图
代码分析自定义EditText子类,然后重写onKeyPreIme方法 @Override public boolean onKeyPreIme( int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == 1 ) { Log.i( "DownEditTextView","键盘向下" ); 超级.onKeyPreIme(keyCode, event); if (onKeyBoardHideListener != null ){ onKeyBoardHideListener.onKeyHide(keyCode, event); //回调 } return false ; } 返回 超级.onKeyPreIme(keyCode, event); } 使用步骤一、项目组织结构图注意事项: 1、 导入类文件后需要change包名以及重新import R文件路径 2、 Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖 二、导入步骤将DownEditTextView复制到项目中包com.why.project.androidcnblogsdemo.views.customedittext; 导入android.annotation.SuppressLint; 导入android.content.Context; 导入android.util.AttributeSet; 导入android.util.Log; 导入android.view.KeyEvent; 导入android.widget.EditText; /** * 海育王创作 * Used 对Android 软键盘向下的监听:https://blog.csdn.net/yxhuang2008/article/details/53822072 * Android软键盘弹出和收回监听:https://blog.csdn.net/wangkai1101/article/details/79066046 */ @SuppressLint( "AppCompatCustomView" ) 公共 类DownEditTextView扩展EditText { public DownEditTextView(Context context) { super (context); } public DownEditTextView(Context context, AttributeSet attrs) { super (context, attrs); } public DownEditTextView(上下文上下文,AttributeSet attrs,int defStyleAttr){ 超级(上下文,attrs,defStyleAttr); } @覆盖 public boolean onKeyPreIme( int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == 1 ) { Log.i( "DownEditTextView","键盘向下" ); 超级.onKeyPreIme(keyCode, event); if (onKeyBoardHideListener != null ){ onKeyBoardHideListener.onKeyHide(keyCode, event); //回调 } return false ; } 返回 超级.onKeyPreIme(keyCode, event); } /** *键盘监听接口 */ public OnKeyBoardHideListener onKeyBoardHideListener; 公共 无效setOnKeyBoardHideListener(OnKeyBoardHideListener onKeyBoardHideListener) { this .onKeyBoardHideListener = onKeyBoardHideListener; } 公共 接口OnKeyBoardHideListener{ void onKeyHide( int keyCode, KeyEvent event); } } 输入框背景图片资源input_box_send.9.png三、使用方法在布局文件中引用这个自定义控件【注意,实际项目中需要更改DownEditTextView的完整路径】<?xml 版本="1.0" 编码="utf-8"?>
<!-- 自定义EditText的演示(监听软键盘隐藏) -->
<LinearLayout xmlns:android="http://schemas./apk/res/android"
机器人:方向=“垂直”
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"
安卓:inputType="文本"
android:hint="演示监听软键盘隐藏功能"
机器人:线=“1”
android:background="@drawable/input_box_send"
android:layout_margin="8dp"
/>
</线性布局>
Activity中使用包com.why.project.androidcnblogsdemo.activity; 导入android.os.Bundle; 导入android.support.v7.app.AppCompatActivity; 导入android.view.KeyEvent; 导入android.widget.Toast; 导入com.why.project.androidcnblogsdemo.R; 导入com.why.project.androidcnblogsdemo.views.customedittext.DownEditTextView; /** * 海育王创作 * Used 自定义EditText的演示(监听软键盘隐藏) */ 公共 类DownEditTextActivity扩展AppCompatActivity { 私有DownEditTextView mDownEditTextView; @覆盖 protected void onCreate (Bundle savedInstanceState) { super .onCreate (savedInstanceState); setContentView(R.layout.activity_downedittext); 初始化视图(); 初始化事件(); } 私人 无效initViews(){ mDownEditTextView = (DownEditTextView) findViewById(R.id.edt_down); } 私人 无效initEvents(){ mDownEditTextView.setOnKeyBoardHideListener(新DownEditTextView.OnKeyBoardHideListener(){ @覆盖 公共 无效onKeyHide(int keyCode,KeyEvent事件){ Toast.makeText(DownEditTextActivity.this,"软键盘隐藏了",Toast.LENGTH_SHORT).show(); } }); } } 混淆配置无 参考资料 |
|