android - CoordinatorLayout में टूलबार के नीचे के दृश्य जोड़ें




android-toolbar android-coordinatorlayout (2)

मेरे पास निम्नलिखित लेआउट हैं:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main_content"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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:theme="@style/ThemeOverlay.AppCompat.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</android.support.design.widget.CoordinatorLayout>

मैं FrameLayout में FrameLayout एस जोड़ता हूं, उन्हें प्रतिस्थापित करता हूं। मेरा एक Fragment एस एक सूची है, जिसमें निम्न लेआउट है:

<android.support.v7.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

यहाँ मेरी समस्या यह है कि टूलबार सूची में शामिल है । मैंने समन्वयकलेयआउट की सामग्री को एक LinearLayout में लपेटकर इसे हल करने की कोशिश की, जो कि ओवरड्रॉल को हल करता है, लेकिन इस तरह से ऐपबार स्क्रॉलिंग व्यवहार अब काम नहीं करता है।

किसी भी प्रकार की मदद की बेहद सराहना की जाती है!


एंड्रॉइड स्टूडियो 3.4 के रूप में, आपको अपने लेआउट में इस लाइन को डालने की आवश्यकता है जो RecyclerView रखती है।

एप्लिकेशन: layout_behavior = "android.support.design.widget.AppBarLayout $ ScrollingViewBehavior"


गुण को लें

app:layout_behavior="@string/appbar_scrolling_view_behavior"

RecyclerView बंद करें और इसे FrameLayout जिसे आप Toolbar नीचे दिखाने की कोशिश कर रहे हैं।

मैंने पाया है कि एक महत्वपूर्ण बात यह है कि स्क्रॉलिंग व्यू व्यवहार टूलबार के नीचे के घटक को लेआउट करता है। क्योंकि FrameLayout का एक वंशज है जो स्क्रॉल करेगा ( RecyclerView ), CoordinatorLayout Toolbar को स्थानांतरित करने के लिए उन स्क्रॉलिंग घटनाओं को प्राप्त करेगा।

एक अन्य चीज़ के बारे में पता होना चाहिए: उस लेआउट व्यवहार के कारण FrameLayout ऊँचाई आकार की होगी जैसे कि Toolbar पहले से ही स्क्रॉल किया गया है , और Toolbar पूरी तरह से प्रदर्शित होने के साथ पूरे दृश्य को बस नीचे धकेल दिया जाता है ताकि दृश्य का निचला भाग नीचे हो समन्वयकलेयूट के नीचे।

यह मेरे लिए आश्चर्य की बात थी। मैं उम्मीद कर रहा था कि दृश्य गतिशील रूप से आकार बदला जाएगा क्योंकि टूलबार ऊपर और नीचे स्क्रॉल किया गया है। इसलिए यदि आपके पास अपने दृश्य के तल पर एक निश्चित घटक के साथ एक स्क्रॉलिंग घटक है, तो आप उस घटक को तब तक नहीं देखेंगे जब तक कि आपने Toolbar को पूरी तरह से स्क्रॉल नहीं किया है।

इसलिए जब मैंने UI के नीचे एक बटन को एंकर करना चाहा, तो मैंने CoordinatorLayout android:layout_gravity="bottom" के नीचे बटन दबाकर इसके चारों ओर काम किया ( android:layout_gravity="bottom" ) और बटन की ऊंचाई के बराबर नीचे का मार्जिन जोड़कर टूलबार के नीचे देखें।





androiddesignsupport