Bana gelince, her parçada uygulama çubuğu ve araç çubuğu olması çok garip geliyor. Bu yüzden, etkinlikte araç çubuğu olan tek bir uygulama çubuğuna sahip olmayı seçtim.
Bu sorunu CoordinatorLayout ile çözmek için, FrameLayout
varsayılan davranışı geçersiz kılmak istediğiniz her bir parçadan parçaları tutması gereken farklı bir Layout (veya başka bir Layout) davranışını ayarlamanız gerekecektir .
Varsayılan davranışınızın şu olduğunu varsayalım: app:layout_behavior="@string/appbar_scrolling_view_behavior"
Sonra fragment_activity_layout.xml dosyanızda şöyle bir şey olabilir:
<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>
Ve uygulamak istemediğiniz her parçada app:layout_behavior="@string/appbar_scrolling_view_behavior"
, geçersiz kılmanız onAttach
ve aşağıdakilerinizin onDetach
davranışını değiştirecek yöntemleri kullanmanız gerekecektir 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;
}
Bundan sonra CoordinatorLayout, uygulama çubuğunu vb. Daraltmaz ve parça düzenlerinin tam yükseklikte olmasına izin verir.