Я пытаюсь скрыть свою панель инструментов в прокрутке RecyclerView, и до сих пор кажется, что она скрыта, но она оставляет белый пробел с ней. Я уверен, что это как-то связано с наложением макета MainActivity и фрагмента в FrameLayout.Панель инструментов, оставляющая пустое пространство с укрытием на прокрутке RecyclerView
Вот мой activity_main.xml
. Мне нужен FrameLayout, потому что я загружаю разные фрагменты с выбором элемента в навигационном ящике.
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="7dp"
tools:context=".MainActivity"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" />
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF" />
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>
И вот код во фрагменте, который содержит RecyclerView.
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_main, container, false);
getActivity().setTitle("Unit One");
rv = (RecyclerView) v.findViewById(R.id.rv);
rv.setHasFixedSize(true);
llm = new LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
initializeData();
initializeAdapter();
rv.addOnScrollListener(showHideToolbarListener = new RecyclerViewUtils.ShowHideToolbarOnScrollingListener(MainActivity.toolbar));
if (savedInstanceState != null) {
showHideToolbarListener.onRestoreInstanceState((RecyclerViewUtils.ShowHideToolbarOnScrollingListener.State) savedInstanceState
.getParcelable(RecyclerViewUtils.ShowHideToolbarOnScrollingListener.SHOW_HIDE_TOOLBAR_LISTENER_STATE));
}
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putParcelable(RecyclerViewUtils.ShowHideToolbarOnScrollingListener.SHOW_HIDE_TOOLBAR_LISTENER_STATE,
showHideToolbarListener.onSaveInstanceState());
super.onSaveInstanceState(outState);
}
И, наконец, RecyclerView макет в fragment_main.xml
:
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:orientation="vertical"
android:scrollbars="vertical"
android:id="@+id/rv" />
Это следовать до моего other post, но я хотел бы задать новый вопрос, так как я пробуя different method на этот раз (не читайте весь пост, см. редактирование внизу). Вот его MainActivity и фактический scrolling listener code.
Прошу прощения, если мне кажется, что я говорю «вот мое дерьмо, исправьте это», но я потратил почти два часа на поиски возможного решения этого. Как всегда, я очень ценю помощь.
опубликуйте элемент макета 'RecyclerView'. Вы использовали «CardView»? У вас есть эффект возвышения или эффект краевой тени ... – SilentKnight