应用场景:
manifest中activity设置如下属性:
android:windowSoftInputMode="stateHidden"
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
此时按照网上搜索的通常方法,重写linearLayout,会不起作用,因为layout的bottom属性在全屏中不变。
改用api 1就有ViewTreeObserver来监听layout变化:
//获取最外层Layout
final View rootView=((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
rootView.getWindowVisibleDisplayFrame(rect);
int rootHeight=rootView.getRootView().getHeight();
int displayHeight=rect.height();
int diffHeight=rootHeight-displayHeight;
if(diffHeight==0){
//键盘收起
}else{
//键盘弹出
}
}
});
PS:渣排版,轻拍