欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

程序员文章站 2022-05-25 21:10:29
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能。基本上和参考资料相同。 效果图 代码分析 自定义EditText子类,然后重写onKeyPreIme方法 使用步骤 一、项目组织结构图 注意事项: 1、 导入类文件后需要c ......

版权声明:本文为haiyuking原创文章,转载请注明出处!

前言

记录自定义edittext控件实现监听软键盘隐藏事件的功能。基本上和参考资料相同。

效果图

DownEditTextView【自定义Edittext对Android 软键盘向下的监听】  DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

代码分析

自定义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);
    }

使用步骤

一、项目组织结构图

DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

注意事项:

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【自定义Edittext对Android 软键盘向下的监听】

三、使用方法

在布局文件中引用这个自定义控件【注意,实际项目中需要更改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下载地址

上面已提供相关代码。