저에게는 각 조각에 앱 바와 툴바가있는 것이 너무 이상하게 들립니다. 그래서 저는 활동에 툴바가있는 단일 앱 바를 선택했습니다.
CoordinatorLayout으로이 문제를 해결하려면 FrameLayout
기본 동작을 재정의하려는 각 조각의 조각을 보유해야하는 사용자 (또는 다른 레이아웃) 의 다른 동작을 설정 해야합니다.
기본 동작이 app:layout_behavior="@string/appbar_scrolling_view_behavior"
그런 다음 fragment_activity_layout.xml에 다음과 같은 내용이있을 수 있습니다.
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/dashboard_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.Toolbar"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/dashboard_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
그리고 구현하지 않으려는 각 조각에서 다음 동작을 변경하는 메서드 와 app:layout_behavior="@string/appbar_scrolling_view_behavior"
재정의 해야합니다 .onAttach
onDetach
FrameLayout
CoordinatorLayout.Behavior behavior;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if(behavior != null)
return;
FrameLayout layout =(FrameLayout) getActivity().findViewById(R.id.dashboard_content);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) layout.getLayoutParams();
behavior = params.getBehavior();
params.setBehavior(null);
}
@Override
public void onDetach() {
super.onDetach();
if(behavior == null)
return;
FrameLayout layout =(FrameLayout) getActivity().findViewById(R.id.dashboard_content);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) layout.getLayoutParams();
params.setBehavior(behavior);
layout.setLayoutParams(params);
behavior = null;
}
그 후에 CoordinatorLayout은 앱바 등을 축소하지 않으며 조각 레이아웃을 전체 높이로 허용합니다.