Android 判断软键盘的状态(显示,隐藏)
Android 判断软键盘的状态(显示,隐藏)
先上截图,有图有真相:
自定义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;
- }
- @Override
- protected 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://linux.bkjia.com/
用户名与密码都是www.bkjia.com
具体下载目录在 /2012年资料/6月/30日/Android 判断软键盘的状态(显示,隐藏)
评论暂时关闭