मेरे लिए जैसा कि प्रत्येक टुकड़े में ऐपबार और टूलबार होना बहुत अजीब लगता है। इसलिए मैंने गतिविधि में टूलबार के साथ एकल ऐपबार चुना है।
समन्वयक के साथ उस समस्या को हल करने के लिए, आपको अपने FrameLayout
(या किसी भी अन्य लेआउट) के अलग-अलग व्यवहार को सेट करना होगा, जो कि प्रत्येक उस टुकड़े से टुकड़े को पकड़ना चाहिए जिसे आप डिफ़ॉल्ट व्यवहार को ओवरराइड करना चाहते हैं।
मान लेते हैं, कि आपका डिफ़ॉल्ट व्यवहार है app:layout_behavior="@string/appbar_scrolling_view_behavior"
तब आपके खंड_नियंत्रण_लेआउट.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 ऐपबार इत्यादि को ध्वस्त नहीं करेगा, और खंड लेआउट को पूर्ण-ऊँचाई पर ले जाने की अनुमति देगा।