DownEditTextView【自定义Edittext对Android 软键盘向下的监听】
版权声明:本文为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下载地址
上面已提供相关代码。
DownEditTextView【自定义Edittext对Android 软键盘向下的监听】的更多相关文章
- Android EditText软键盘显示隐藏以及“监听”
一.写此文章的起因 本人在做类似于微信.易信等这样的聊天软件时,遇到了一个问题.聊天界面最下面一般类似于如图1这样(这里只是显示了最下面部分,可以参考微信等),有输入文字的EditText和表情按钮等 ...
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
在输入框中加入android:imeOptions="actionSearch",调用软键盘时,回车键就会显示搜索二字. 我想在点击搜索时,跳转到下一个页面,但是调用setOnKe ...
- Android 设置软键盘搜索键以及监听搜索键点击事件
如图所示,有时候为了布局美观,在搜索时没有搜索按钮,而是调用软件盘上的按钮.调用的实现只需要在XML在输入框中加入android:imeOptions="actionSearch" ...
- Android 自定义EditText实现粘贴,复制,剪切的监听
package com.dwtedx.qq.view; import android.annotation.SuppressLint; import android.content.Context; ...
- edittext禁止android软键盘弹出
1. EditText ed=(EditText) findViewById(R.id.test); ed.clearFocus(); 2. 在AndroidMainfest.xml中选择哪个acti ...
- Android WebView 向上向下滑动监听
在手势的 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {}代码 ...
- Android之Android软键盘的隐藏显示研究
转自:http://blog.csdn.net/lilu_leo/article/details/6587578 看了很多这类型的文章,这篇文章最有价值,解决了我的烦恼,必须转. Android是一个 ...
- Android 软键盘监听事件
Android软键盘的隐藏显示研究 Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入. 那么,弹出软键盘后必然会造成原有布局高度的减少 ...
- 关于android软键盘enter键的替换与事件监听
android软键盘事件监听enter键 软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有 normal,actionUnspecified,actionNo ...
随机推荐
- MariaDB/MySQL备份和恢复(一):mysqldump工具用法详述
本文目录:1.备份分类2.备份内容和备份工具3.mysqldump用法详述 3.1 语法选项 3.1.1 连接选项 3.1.2 筛选选项 3.1.3 DDL选项 3.1.4 字符集选项 3.1.5 复 ...
- Ext Js Sencha Cmd 命令 打包charts
先进入charts包的目录下 cd D:\开发文档API\ext--gpl\packages\charts 在执行打包命令 sencha package build
- redis 设置
设置成服务命令,redis目录下,执行cmd命令 redis-server --service-install redis.windows-service.conf --loglevel verbos ...
- PHP中的 $_SERVER 函数说明详解
用php在开发软件的时候,我们经常用到 $_SERVER[]这个函数,今天就来讲下这个数组的值,方便以后使用: A: $_SERVER['ARGC'] #包含传递给程序的 命令行参数的个数(如果运行在 ...
- 震惊!外部类可以访问内部类private变量
在讲Singleton时我举例时用过这样一段代码: public class SingletonDemo { private static class SingletonHolder{ private ...
- ORA-01658: 无法为表空间 YJXT 中的段创建 INITIAL 区
oracle 用imp导入数据的时候报错:遇到ORACLE 错误1658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 解决办法:需要添加数据文件而不是新增表空间,代码如下: alt ...
- 批处理(Batch)---批处理脚本。
批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat .目前比较常见的批 ...
- .NET之IOC控制反转运用
当前场景: 如果有不同的用户.使用同一个系统.而不同的客户有某些不同的需求.在不改变系统主体的情况下,可以直接使用IOC控制反转依赖搭建项目 1.添加接口层 目前里面只有一个会员的类.里面有一个登录接 ...
- Putty连接TPYBorad v102 开发板教程
第一步:下载Putty软件 http://www.micropython.net.cn/download/tool/3.html 第二步:通过USB数据线将TPYBorad与PC相连 第三步:打开设备 ...
- NS3系列——eclipse + NS3环境搭建
1. 安装NS3 (1)在 ubuntu12.04 中安装 ns3.20,首先要安装一下各种依赖软件: sudo apt-get install gcc g++ pythonsudo apt-get ...