您的位置:首页 > 移动开发 > Android开发

Android判断输入框的状况

2015-10-27 16:51 471 查看

整体思路

定义一个layout,重写onMeasure。定义一个变量,记录两次方法的差值。通过这个差值来判断是否弹出输入框。当然,这是取巧。

1、定义一个布局

package com.example.testandroid.view;

import android.content.Context;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.widget.FrameLayout;

/**
* Created by Administrator on 13-6-27.
*
* @author ll
* @version 2.0.0
*/
public class MonitorSizeEventFrameLayout extends FrameLayout {

private int mPreviousHeight;

/**
* MonitorSizeEventFrameLayout
*
* @param context context
* @param attrs   attrs
*/
public MonitorSizeEventFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measureHeight = MeasureSpec.getSize(heightMeasureSpec);
if (mPreviousHeight != 0) {
int navigationBarHeight = getNavigationBarHeight();
if (measureHeight < mPreviousHeight - navigationBarHeight) {    // 减去底部虚拟键盘高度,过滤掉虚拟键盘显隐产生的页面高度变化
System.out.println("打开了");
} else if (measureHeight - navigationBarHeight > mPreviousHeight) {
System.out.println("关闭了");
}
}
mPreviousHeight = measureHeight;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

/**
* 获取底部虚拟键Navigation Bar的高度
* @return
*/
private int getNavigationBarHeight() {
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");
int height = resources.getDimensionPixelSize(resourceId);
return height;
}
}


2、在Actiivty的布局文件中添加自定义布局

3、在manifest添加

android:windowSoftInputMode="stateHidden|adjustResize"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: