这是我的设置,我正在运行 DrawerLayout ,其中包含一个包含AppBarLayout和nestedscrollview 的 CoordinatorLayout。我试图让nestedscrollview正常滚动,工具栏在向下滚动时隐藏,并在向上滚动时重新编辑。附在我的XML代码中。非常感谢任何帮助..已阅读所有相关问题并实施了他们的答案,但没有任何成功。
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout_admin"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/admincoordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/adminrelScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/menu_drawer" />
答案 0 :(得分:4)
我有一个星期的同样问题,并尝试了几乎所有解决方案。 但是我设法解决了这个问题。
你有什么...... ...
<include
android:id="@+id/app_bar"
layout="@layout/app_bar"
app:layout_scrollFlags="scroll|enterAlways" />
...将其替换为app_bar.xml
布局中的内容。例如:
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
style="@style/AppTheme.Toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|enterAlways"/>
由于某些原因,使用CoordinatorLayout
代码时使用<include>
滚动功能似乎不起作用。
答案 1 :(得分:1)
我认为使用新的CollapsingToolbarLayout会有所帮助...... 某些very useful exploration of the new Android Design Support Library的简短说明显示了如何将工具栏包装在CollapsingToolbarLayout中,并通过设置layout_collapseMode来自定义效果。
更新
我认为将onScrollListener添加到ListView并显示/隐藏工具栏,如this answer中的此示例:
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
listView.setOnScrollListener(new OnScrollListener() {
int mLastFirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) { }
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (view.getId() == listView.getId()) {
final int currentFirstVisibleItem = listView.getFirstVisiblePosition();
if (currentFirstVisibleItem > mLastFirstVisibleItem) {
getSupportActionBar().hide();
} else if (currentFirstVisibleItem < mLastFirstVisibleItem) {
getSupportActionBar().show();
}
mLastFirstVisibleItem = currentFirstVisibleItem;
}
}
});
答案 2 :(得分:1)
正如@Farbod Salamat-Zadehwas之前所说:CoordinatorLayout
在使用<include>
标签时不起作用。
但您可以这样使用<include>
:
<include
android:id="@+id/app_bar"
layout="@layout/app_bar" />
参数app:layout_scrollFlags="scroll|enterAlways"
只有在您可以接受的情况下才会被移至app_bar.xml