【发布时间】:2015-11-16 20:17:00
【问题描述】:
【问题讨论】:
【问题讨论】:
为您的活动的根视图指定一个已知 ID,例如 @+id/activityRoot,将 GlobalLayoutListener 挂钩到 ViewTreeObserver,然后从那里计算活动的视图根和窗口大小之间的大小差异:
final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
... do something here
}
}
});
注意:您的应用程序必须在 Android Manifest android:windowSoftInputMode="adjustResize" 中设置此标志,否则上述解决方案将不起作用。
【讨论】: