版权声明:本文为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();
}
});
}
}

混淆配置

参考资料

对Android 软键盘向下的监听

Android软键盘弹出和收回监听

项目demo下载地址

上面已提供相关代码。

DownEditTextView【自定义Edittext对Android 软键盘向下的监听】的更多相关文章

  1. Android EditText软键盘显示隐藏以及“监听”

    一.写此文章的起因 本人在做类似于微信.易信等这样的聊天软件时,遇到了一个问题.聊天界面最下面一般类似于如图1这样(这里只是显示了最下面部分,可以参考微信等),有输入文字的EditText和表情按钮等 ...

  2. android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决

    在输入框中加入android:imeOptions="actionSearch",调用软键盘时,回车键就会显示搜索二字. 我想在点击搜索时,跳转到下一个页面,但是调用setOnKe ...

  3. Android 设置软键盘搜索键以及监听搜索键点击事件

    如图所示,有时候为了布局美观,在搜索时没有搜索按钮,而是调用软件盘上的按钮.调用的实现只需要在XML在输入框中加入android:imeOptions="actionSearch" ...

  4. Android 自定义EditText实现粘贴,复制,剪切的监听

    package com.dwtedx.qq.view; import android.annotation.SuppressLint; import android.content.Context; ...

  5. edittext禁止android软键盘弹出

    1. EditText ed=(EditText) findViewById(R.id.test); ed.clearFocus(); 2. 在AndroidMainfest.xml中选择哪个acti ...

  6. Android WebView 向上向下滑动监听

    在手势的 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,   float velocityY) {}代码 ...

  7. Android之Android软键盘的隐藏显示研究

    转自:http://blog.csdn.net/lilu_leo/article/details/6587578 看了很多这类型的文章,这篇文章最有价值,解决了我的烦恼,必须转. Android是一个 ...

  8. Android 软键盘监听事件

    Android软键盘的隐藏显示研究 Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入.     那么,弹出软键盘后必然会造成原有布局高度的减少 ...

  9. 关于android软键盘enter键的替换与事件监听

    android软键盘事件监听enter键  软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有 normal,actionUnspecified,actionNo ...

随机推荐

  1. C#语言中的XmlSerializer类的XmlSerializer.Deserialize (Stream)方法举例详解

    包含由指定的 XML 文档反序列化 Stream. 命名空间:   System.Xml.Serialization程序集:  System.Xml(位于 System.Xml.dll) 注意: 反序 ...

  2. Flux和ExtJS MVC框架的异同点介绍

    Flux是Facebook在现有MVC框架数据流动复杂,难以设计和维护大型的前端应用的情况下设计的一种新的数据架构协议.叫做协议是因为Flux本身就像MVC一样,规定了一种机制,但是Facebook提 ...

  3. 前端工程化(二)---webpack配置

    导航 前端工程化(一)---工程基础目录搭建 前端工程化(二)---webpack配置 前端工程化(三)---Vue的开发模式 前端工程化(四)---helloWord 继续上一遍的配置,本节主要记录 ...

  4. css多类选择器

    <!DOCTYPE html> <html lang="zh-CN"> <head> <style type="text/css ...

  5. 输入流IS和输出流OS学习总结

    1.我们编写的程序,除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界,比如我们编写的程序想读取一个文本文件, 又或者是我们想将程序的一些数据写到一个文件中,这时我们就要 ...

  6. 加密原理介绍,代码实现DES、AES、RSA、Base64、MD5

    阅读目录 github下载地址 一.DES对称加密 二.AES对称加密 三.RSA非对称加密 四.实际使用 五.关于Padding 关于电脑终端Openssl加密解密命令 关于网络安全的数据加密部分, ...

  7. 数码相框(LCD、I2C)

    一:项目介绍    该项目最终实现的功能很简单,手指在触摸屏左滑(下一张图片),右滑(上一张图片)    1.1软硬件资源    硬件:pc机,ARM Cortex-A9开发板    软件:linux ...

  8. Oracle-06:DML语言数据表的操作

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 开篇放上一个SQL脚本,供测试使用 create table DEPT ( deptno ) not null ...

  9. 设计模式(Design Patterns)Java版

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  10. Enabling Chrome Developer Tools inside Postman

    Chrome's Developer Tools are an indispensable part of the modern web development workflow. However, ...