3 回答
TA贡献1796条经验 获得超10个赞
是的,您可以在Viewtree Observer和全局布局侦听器的帮助下,尝试以下提到的步骤
获取布局的根视图
获取此根的Viewtree观察器,并在此之上添加全局布局侦听器。
现在,无论何时显示软键盘,Android都会重新调整屏幕大小,您将在监听器上收到呼叫。这就是现在唯一需要做的就是计算重新调整大小后根视图与原始大小之间的高度差。如果差异大于150,则认为这是因为键盘已膨胀。
以下是示例代码
root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
public void onGlobalLayout(){
int heightDiff = root.getRootView().getHeight()- root.getHeight();
// IF height diff is more then 150, consider keyboard as visible.
}
});
问候,Techfist
TA贡献1824条经验 获得超5个赞
我为此尝试了许多建议的方法,但似乎没有一种方法适用于Android SDL。我认为这是因为SDL显示是“全屏”,还是因为它位于“ AbsoluteLayout”中,因此“视图”的高度从未真正改变过。这种方法对我有用:
mRootWindow = getWindow();
mRootView = mRootWindow.getDecorView().findViewById(android.R.id.content);
mRootView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout(){
Rect r = new Rect();
View view = mRootWindow.getDecorView();
view.getWindowVisibleDisplayFrame(r);
// r.left, r.top, r.right, r.bottom
}
});
- 3 回答
- 0 关注
- 372 浏览
添加回答
举报