先上截图,有图有真相:

Android 判断软键盘的状态(显示,隐藏)_第1张图片

Android 判断软键盘的状态(显示,隐藏)_第2张图片

自定义RelativeLayout

package com.demo.softkeyboard;import android.content.Context;import android.util.AttributeSet;import android.widget.RelativeLayout;public class KeyboardListenRelativeLayout extends RelativeLayout {private static final String TAG = KeyboardListenRelativeLayout.class.getSimpleName();public static final byte KEYBOARD_STATE_SHOW = -3;public static final byte KEYBOARD_STATE_HIDE = -2;public static final byte KEYBOARD_STATE_INIT = -1;private boolean mHasInit = false;private boolean mHasKeyboard = false;private int mHeight;private IOnKeyboardStateChangedListener onKeyboardStateChangedListener;public KeyboardListenRelativeLayout(Context context) {super(context);}public KeyboardListenRelativeLayout(Context context, AttributeSet attrs) {super(context, attrs);}public KeyboardListenRelativeLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public void setOnKeyboardStateChangedListener(IOnKeyboardStateChangedListener onKeyboardStateChangedListener) {this.onKeyboardStateChangedListener = onKeyboardStateChangedListener;}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);if(!mHasInit) {mHasInit = true;mHeight = b;if(onKeyboardStateChangedListener != null) {onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_INIT);}} else {mHeight = mHeight < b ? b : mHeight;}if(mHasInit && mHeight > b) {mHasKeyboard = true;if(onKeyboardStateChangedListener != null) {onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_SHOW);}}if(mHasInit && mHasKeyboard && mHeight == b) {mHasKeyboard = false;if(onKeyboardStateChangedListener != null) {onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_HIDE);}}}public interface IOnKeyboardStateChangedListener {public void onKeyboardStateChanged(int state);}}

用法:

package com.demo.softkeyboard;import com.demo.softkeyboard.KeyboardListenRelativeLayout.IOnKeyboardStateChangedListener;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.TextView;/** * 软键盘监听Demo * @author qiaoning * */public class SoftKeyboardListenDemoActivity extends Activity {private EditText editText;KeyboardListenRelativeLayout relativeLayout;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                relativeLayout = (KeyboardListenRelativeLayout) findViewById(R.id.keyboardRelativeLayout);        editText = (EditText) findViewById(R.id.editText);                relativeLayout.setOnKeyboardStateChangedListener(new IOnKeyboardStateChangedListener() {public void onKeyboardStateChanged(int state) {switch (state) {case KeyboardListenRelativeLayout.KEYBOARD_STATE_HIDE://软键盘隐藏editText.setVisibility(View.VISIBLE);break;case KeyboardListenRelativeLayout.KEYBOARD_STATE_SHOW://软键盘显示editText.setVisibility(View.GONE);break;default:break;}}});    }}

使用到的布局文件:

<?xml version="1.0" encoding="utf-8"?><com.demo.softkeyboard.KeyboardListenRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/keyboardRelativeLayout"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <ScrollView android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:fillViewport="true">        <LinearLayout android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:orientation="vertical">            <EditText android:id="@+id/editText"                android:layout_width="fill_parent"                android:layout_height="wrap_content"/>        </LinearLayout>    </ScrollView></com.demo.softkeyboard.KeyboardListenRelativeLayout>


源代码: http://download.csdn.net/detail/qiaoning13256/4401259

更多相关文章

  1. android隐藏以及显示软键盘以及不自动弹出键盘的方法
  2. Android 异步加载一张网络图片
  3. android 获取手机的各种状态
  4. android 播放视频时切换全屏隐藏状态栏
  5. android 去除 标题和状态栏
  6. android 使图片显示 圆角
  7. android ImageUtils 图片处理工具类

随机推荐

  1. [转]Android(安卓)源代码结构
  2. Android7.0中文文档(API)-- AlphabetIndexe
  3. Android(安卓)源代码结构
  4. Android(安卓)Init Language(android init
  5. 制作android/cordova splash screen
  6. Android(安卓)EditText 限制文本框输入的
  7. Android图片的处理类
  8. Android7.0中文文档(API)-- Filter
  9. gradle DSL method not found: android()
  10. Android摄像头相关问题记录