如何检测Android键盘出现/消失的时间? (5.02)
问题描述:
我更新了我的手机和我以前工作过的代码在5.02(新版本,我只是更新手机)无法正常工作。有没有一种方法可以与所有版本兼容?这里是我的代码,不再工作(它说它不可见时):如何检测Android键盘出现/消失的时间? (5.02)
final View activityRootView = findViewById(R.id.mainRelativeLayout);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout()
{
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100)
{
System.out.println("test: keyboard visible");
RelativeLayout.LayoutParams lp =(RelativeLayout.LayoutParams)bottomSelectionLayout.getLayoutParams();
lp.height = 0;
bottomSelectionLayout.setLayoutParams(lp);
RelativeLayout.LayoutParams lp2 =(RelativeLayout.LayoutParams)bottomSeperatorLine.getLayoutParams();
lp2.height = 0;
bottomSeperatorLine.setLayoutParams(lp2);
bottomSelectionLayout.setVisibility(View.INVISIBLE);
bottomSeperatorLine.setVisibility(View.INVISIBLE);
}
else
{
System.out.println("test: keyboard invisible");
RelativeLayout.LayoutParams lp =(RelativeLayout.LayoutParams)bottomSelectionLayout.getLayoutParams();
lp.height = (int) bottomSelectionLayoutStartingHeight;
bottomSelectionLayout.setLayoutParams(lp);
RelativeLayout.LayoutParams lp2 =(RelativeLayout.LayoutParams)bottomSeperatorLine.getLayoutParams();
lp2.height = (int)bottomSeperatorLineStartingHeight;
bottomSeperatorLine.setLayoutParams(lp2);
bottomSelectionLayout.setVisibility(View.VISIBLE);
bottomSeperatorLine.setVisibility(View.VISIBLE);
}
}
});
答
您可以将以下行添加到您的布局XML?这将有助于支持android:windowSoftInputMode="adjustResize"
,您已将其添加到版本21和更高版本的AndroidManifest.xml中
android:fitsSystemWindows="true"
问题是键盘未正确检测到。当它不在时它被检测为可见。无论我尝试将你的代码添加到我的清单并且它不能解决问题:( – JessThePest
好吧,这里有更多的信息可以帮助你。当键盘可见时,heightDiff是146.当键盘不可见时,heightDiff是670 。 – JessThePest