আমার হিসাবে এটি প্রতিটি খণ্ডে অ্যাপবার এবং সরঞ্জামদণ্ড থাকা খুব অদ্ভুত বলে মনে হচ্ছে। তাই আমি ক্রিয়াকলাপে টুলবার সহ একক অ্যাপবারটি বেছে নিয়েছি।
সমন্বয়কারী FrameLayout
লেআউটের সাথে এই সমস্যাটি সমাধান করতে আপনাকে আপনার (বা অন্য কোনও লেআউট) এর আলাদা আচরণ নির্ধারণ করতে হবে যা আপনি ডিফল্ট আচরণকে ওভাররাইড করতে চান এমন প্রতিটি খণ্ড থেকে টুকরো টুকরো টুকরো করে রাখতে হবে।
ধরে নেওয়া যাক, আপনার ডিফল্ট আচরণ এটি app:layout_behavior="@string/appbar_scrolling_view_behavior"
তারপরে আপনার খণ্ড_অ্যাক্টিভিটি_এলআউটআউট.এক্সএমএলে আপনার এমন কিছু থাকতে পারে:
<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;
}
এর পরে সমন্বয়কারী লেআউট অ্যাপবার ইত্যাদির পতন ঘটবে না এবং খণ্ড লেআউটগুলি পুরো উচ্চতার হতে দেবে।