当我们的列表滚动到顶部时如何制作隐藏/显示工具栏,知道工具栏视图在activity_main.xml中描述,但recyclelerView在另一个fragmet nomed Fragment_main.xml中描述
抱歉我的英语:)答案 0 :(得分:1)
由于您的内容视图中包含工具栏的活动正在启动片段,因此您始终可以从片段中获取它。
MainActivity mainActivity = (MainActivity)getActivity();
我建议在MainActivity中为它做一个方法:
public void showToolbar(boolean show) {
// If you have your toolbar as a private member of MainActivity
toolbar.setVisiblity(show ? View.VISIBLE : View.GONE);
// But you can also do this
if (show) {
getSupportActionBar().show();
}
else {
getSupportActionBar().hide();
}
}
然后当你真的想要从片段中隐藏它时,请将其命名为:
((MainActivity)getActivity()).showToolbar(false);
为了让UI更改更流畅,我建议您翻译它而不是立即隐藏它。看看最佳答案,获取灵感:
android lollipop toolbar: how to hide/show the toolbar while scrolling?
如果您不知道如何通过滚动逻辑来实际显示或隐藏它,请查看此库,它可以为您处理很多,并提供示例:
答案 1 :(得分:0)
这很简单。 只需将此代码放在工具栏中
即可 <android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"/>
这将实现神奇:app:layout_scrollFlags="scroll|enterAlways"
请记得在您的xml中添加应用调用xmlns:app="http://schemas.android.com/apk/res-auto"
查看本教程:https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout
答案 2 :(得分:0)
使用以下代码:
<android.support.design.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
...>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rvToDoList"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.design.widget.CoordinatorLayout>
如果RecyclerView位于另一个片段中,则将以下行添加到此CoordinatorLayout中包含RecyclerView的视图中。
app:layout_behavior="@string/appbar_scrolling_view_behavior"
必须使用CoordinatorLayout
。