安卓EditText焦点获取与释放、弹出和隐藏软键盘以及EditText内容更改、软键盘回车键的事件监听 您所在的位置:网站首页 键盘监听事件java 安卓EditText焦点获取与释放、弹出和隐藏软键盘以及EditText内容更改、软键盘回车键的事件监听

安卓EditText焦点获取与释放、弹出和隐藏软键盘以及EditText内容更改、软键盘回车键的事件监听

#安卓EditText焦点获取与释放、弹出和隐藏软键盘以及EditText内容更改、软键盘回车键的事件监听| 来源: 网络整理| 查看: 265

xml文件布局

不让EditText自动获取焦点在EditText父布局中添加:android:focusable="true"android:focusableInTouchMode="true"1. 获取焦点

当点击EditText时可自动获取焦点,也可以调用EditText.requestFocus()获取焦点。

2. 释放焦点

调用EditText.clearFocus()释放焦点。

设置软键盘回车的动作和动作监听,以及EditText内容改变的监听1. 设置动作xml中设置android:imeOptions="actionDone" //回车键将会显示“完成”常用有:actionNone(无操作)、actionGo(进入)、actionSearch(搜索)、actionSend(发送)、actionNext(下一步)、actionPrevious(上一步)、actionDone(完成)等动作。Java中设置EditText.setImeOptions(EditorInfo.IME_ACTION_DONE);//与xml中对应2. 动作监听EditText mUserName = (EditText) findViewById(R.id.username); //软键盘回车键动作监听 mUserName.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) { //没有设置imeOptions, 默认actionId == KeyEvent.KEYCODE_ENTER if (actionId == EditorInfo.IME_ACTION_DONE) {//imeOptions设置的动作 //释放焦点并隐藏软键盘 SoftKeyboardUtil.hideSoftKeyboard(v, true); /** * 在Activity中可以通过getCurrentFocus()方法得到当前获取焦点的view * 释放焦点并隐藏软键盘 SoftKeyboardUtil.hideSoftKeyboard(getCurrentFocus(), true); */ //去自定义下一步逻辑... return true; } return false; } }); //EditText内容改变监听 mUserName.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) { //EditText内容改变前 } @Override public void onTextChanged(final CharSequence s, final int start, final int before, final int count) { //EditText内容改变中 } @Override public void afterTextChanged(final Editable s) { //EditText内容改变后 } });

SoftKeyboardUtil.java

package com.test.demo.util; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.inputmethod.InputMethodManager; import java.util.Timer; import java.util.TimerTask; public class SoftKeyboardUtil { /** * 延时弹出软键盘 * * @param activity 当前activity * @param view 当前获取焦点的view * @param delay 延时弹出的时间 */ public static void delayShowSoftInput(final Activity activity, final View view, final long delay) { new Timer().schedule(new TimerTask() { @Override public void run() { activity.runOnUiThread(new Runnable() { @Override public void run() { showSoftInput(view); } }); } }, delay); } /** * 弹出软键盘 * @param view 当前获取焦点的view */ private static void showSoftInput(final View view) { if (view != null) { view.setFocusable(true); view.setFocusableInTouchMode(true); view.requestFocus();//获取焦点 InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (!imm.isActive()) //没有显示键盘,弹出 imm.showSoftInput(view, 0); } } /** * 隐藏软键盘 * * @param view 当前获取焦点的view * @param isClearFocus true释放焦点, false保留焦点 */ public static void hideSoftKeyboard(final View view, final boolean isClearFocus) { if (view != null) { if (isClearFocus) view.clearFocus(); InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive()) //有显示键盘,隐藏 imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有