当我使用Translucent StatusBar时,如何限制我的活动内容不会低于ActionBar?我的内容低于ActionBar -.-"
样式(在AppTheme中使用):
<item name="android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
<item name="android:fitsSystemWindows" tools:ignore="NewApi">true</item>
在setContentView:
之后使用此代码解决DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
FrameLayout.LayoutParams params
= new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
params.setMargins(0, getStatusBarHeight() + getActionBarHeight(), 0, 0);
drawer.setLayoutParams(params);
方法:
public int getStatusBarHeight() {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}
public int getActionBarHeight(){
TypedValue tv = new TypedValue();
int actionBarHeight = 0;
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)){
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
return actionBarHeight;
}
答案 0 :(得分:0)
检查样式中的android:windowActionBarOverlay属性并将其设置为false。如果此属性为true,则将绘制活动以使其占据整个屏幕空间,并在活动内容的顶部绘制操作栏。
答案 1 :(得分:0)
在您的布局上,设置属性android:fitsSystemWindows="true"
例如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
这将使您的内容适合操作栏和导航栏。 而且你将避免以编程方式设置边距。