当前位置: 移动技术网 > 移动技术>移动开发>Android > DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

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

2019年04月23日  | 移动技术网移动技术  | 我要评论

版权声明:本文为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下载地址

上面已提供相关代码。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网