更新:此处为example app。我已经在我的Nexus 6P,Android 6.0.1上测试了它。
我正在使用CoordinatorLayout
和RecyclerView
。
如果<item name="android:windowTranslucentNavigation">true</item>
工具栏没有隐藏(但它本身可以滚动)。 appcompat是v7:23.2.1
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
如果我将android:fitsSystemWindows="true"
添加到AppBarLayout
,则可以解决一些问题。
有没有解决方案?
答案 0 :(得分:2)
似乎这是一个错误。我找到了解决问题的临时解决方案。
摆脱协调器布局及其子节目中的所有 android:fitsSystemWindows ,或将其设置为 false 。然后在您的活动中手动将状态栏的高度添加到工具栏的高度和顶部填充:
toolbar.setPadding(0, getStatusBarHeight(), 0, 0);
toolbar.getLayoutParams().height = toolbar.getLayoutParams().height + getStatusBarHeight();
获取状态栏高度的方法:
public int getStatusBarHeight() {
int height = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
height = getResources().getDimensionPixelSize(resourceId);
}
return height;
}
通过这些更改,工具栏可以正确滚动,并且具有适当的高度。