在我的Nexus 5上的Android Lollipop(最近的开发预览,构建LPX13D)中,我正在编写的应用程序似乎隐藏在软导航栏下方(带有Back,Home和App History按钮的栏)。我无法在运行Kit Kat的Nexus 4上复制此内容(导航栏后面没有任何内容)。
我需要做些什么来缩小应用程序的视口,以便可以在屏幕上看到我的所有内容?
编辑:
屏幕截图,根据要求。
Nexus 4运行Kit Kat(4.4.4):
Nexus 5运行Lollipop(5.0,LPX13D):
答案 0 :(得分:10)
经过大量测试后,我发现SlidingMenu库存在问题。我无法修复它,也无法找到除了涉及滑动操作栏的选项之外的根本原因。
我在库的GitHub上发布了一个问题,希望能够修复库或解决方案。
https://github.com/jfeinstein10/SlidingMenu/issues/680
编辑(2014-11-04):作为一个快速跟进,用户在上述问题中发布了与Material主题相关的内容,并且使用Holo主题将避免此问题。我能够证实这一点。所以我们可能需要等待修复SlidingMenu才能将它与Material主题一起使用。
答案 1 :(得分:2)
尝试将android:fitsSystemWindows="true"
添加到Activity布局文件的根视图中。
答案 2 :(得分:0)
如果有人与android.support.v4有类似问题 - 只需将支持库更新为22.2.1版本。
答案 3 :(得分:0)
经过几个小时的研发后,我们采用了解决方案
如果您使用的是ResideMenu
库,则只需在ResideMenu.java
@Override
protected boolean fitSystemWindows(Rect insets) {
int bottomPadding = insets.bottom;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
bottomPadding += resources.getDimensionPixelSize(resourceId);
}
}
this.setPadding(viewActivity.getPaddingLeft() + insets.left, viewActivity.getPaddingTop() + insets.top,
viewActivity.getPaddingRight() + insets.right, viewActivity.getPaddingBottom() + bottomPadding);
insets.left = insets.top = insets.right = insets.bottom = 0;
return true;
}
答案 4 :(得分:0)
现在为我工作的简单解决方案是, 获取导航栏高度并在setContentView之后将填充设置为OnCreate()中活动的根布局。
.....
int navHeight = getNavHeight();
if (navHeight > 0) {
(findViewById(R.id.rlMain)).setPadding(0, 0, 0, navHeight);
}
.....
private int getNavHeight() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
return 0;
try {
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
boolean hasMenuKey = ViewConfiguration.get(getApplicationContext()).hasPermanentMenuKey();
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
if (!hasMenuKey && !hasBackKey) {
return resources.getDimensionPixelSize(resourceId);
}
}
} catch (Exception ex) {
return 0;
}
return 0;
}