android एंड्रॉइड: स्क्रॉलएव्यू के शीर्ष पर टैबलेट को पिन करें




android-layout twitter (3)

मैं अपने फोन पर ट्विटर ऐप देख रहा था

आप देख सकते हैं कि जब कोई उपयोगकर्ता स्क्रॉल करता है, तो टैबलेटआउट वास्तव में टूलबार के ठीक नीचे ही पिन करता है और बिल्कुल भी नहीं चलता है।

मैंने सोचा था कि वे सिर्फ एप के शीर्ष भाग (प्रोफ़ाइल तस्वीर, घास पर साइकिल का प्रोफाइल वॉलपेपर, डालना, टेक्स्ट) को लगाते हुए एक collapsingToolBarLayout और AppBarLayout में डालते हैं लेकिन वास्तव में, केवल प्रोफ़ाइल वॉलपेपर घास पर साइकिल CollapsingToolBarLayout और AppBarLayout का हिस्सा है क्योंकि यह केवल एक हिस्सा है जो वास्तव में गिरता है। पाठ भाग सिर्फ स्क्रॉल करता है और टैबलेआउट सिर्फ टूलबार के नीचे शीर्ष पर पिन होता है।

मैं ट्विटर ऐप पर क्रेडिट पढ़ता हूं और ऐसा प्रतीत होता है कि उन्होंने अपने प्रभाव को प्राप्त करने के लिए स्लाइडिंगटैबलेआउट का उपयोग किया था। स्लाइडिंगटैबआउटआउट टैबलायआउट के समान है जिसे बाद में समर्थित लाइब्रेरी में समर्थित किया गया है।

यह काफी सामान्य पैटर्न की तरह दिखता है जो मुख्यधारा के एप्स द्वारा आजकल भी इस्तेमाल किया जाता है -

Google+ ऐप इसका उपयोग ऐप पर उनके प्रोफ़ाइल दृश्य में करता है:

फेसबुक लम्हें उनके ऐप में इसका इस्तेमाल करते हैं:

किसी भी विचार वे यह सब करने में कामयाब कैसे किया?

मैं इन सभी क्षुधा के समान कुछ करने के लिए देख रहा हूँ

मेरी आवश्यकताएं निम्न हैं:

  1. एक collapsingToolBarLayout है कि गिर जब आप ऊपर स्क्रॉल
  2. CollapsingToolBarLayout के नीचे एक पाठदृश्य रखें जो टूलबार के नीचे स्क्रॉल और "छिपाना" होगा, जब यह पूरी तरह से गिर जाए।
  3. टेक्स्ट विड्थ के नीचे एक टैबलायआउट रखें जो टैबलेट के लिए "स्टिक" होगा, जब आप टेप विडियो को collapsingToolBarLayout के नीचे स्क्रॉल करते हैं
  4. टैबलेआउट के नीचे एक रीसाइक्वेव्यू करें ताकि आप टैबलेटआउट में प्रत्येक टैब पर क्लिक करें, रीसाइक्वेव्यू "ट्वीट्स", "फोटो", "पसंदीदा" आदि की सूची के बीच स्विच हो जाएगा।

मैंने दो अन्य प्रश्नों को देखा जिन्हें SO पर पोस्ट किया गया था:

टैबलायआउट के टैब चयन सूचक को स्क्रॉल करते समय स्क्रीन के शीर्ष पर पिन किया जा सकता है? । इसका जवाब टैबलेआउट के व्यवहार को बदलना है, लेकिन मुझे लगता है कि व्यवहार को बदलने से वास्तव में उत्पन्न होता है कि ट्विटर एप क्या करता है। जैसा कि मैंने उल्लेख किया है, टैबलेटआउट CollapsingToolBarLayout और AppBarLayout के बाहर बैठने के लिए प्रकट होता है और व्यवहार केवल प्रभावी होने चाहिए यदि वह collapsingToolBarLayout और AppBarLayout के भीतर बैठे हैं।

ScrollView के शीर्ष पर टैबलाट आउट कैसे करें? । इस सवाल से मैंने जो कुछ कहा उससे कुछ पूछता है, लेकिन पर्याप्त विवरण नहीं देते हैं और इसका कोई जवाब नहीं है।


उल्लिखित उपर्युक्त प्राप्त करने के लिए सबसे नज़दीक समाधान है MaterialViewPager यह एक अच्छा प्रारंभिक बिंदु है, आप इसे वांछित कर सकते हैं और अपनी पसंद के लिए संशोधित कर सकते हैं, और आप इसे कई तरह से अनुकूलित कर सकते हैं।


डिफ़ॉल्ट रूप से ऐसा पुस्तकालय नहीं हो सकता है जो उस का समर्थन करता हो। लेकिन आप वास्तव में इसे थोड़ी सी प्रोग्रामिंग के साथ हासिल कर सकते हैं। ViewTreeObserver के माध्यम से स्क्रॉलव्यू ईवेंट सुनें, और दूसरों को हेरफेर करें यदि आप अभी भी निश्चित नहीं हैं, तो इसके लिए एक लाइब्रेरी बनाएं। आप जिथूब में ऐप और पोस्ट करते हैं, मैं इसे काम करने के लिए सहयोग करूंगा।


उन पहले 3 प्रश्नों के लिए यहां देखें

चौथे के लिए आपको प्रत्येक टैब के टुकड़े बनाने और उन्हें सरल लोड करने के लिए चुनने की आवश्यकता होती है, या जब आप एक टैब चुनते हैं तो आप एक टुकड़ा बना सकते हैं और विशिष्ट सामग्री दिखाने के लिए उसके साथ संवाद कर सकते हैं ..

EDIT एक अद्यतन लिंक नहीं मिल सका इसलिए यहां उत्तर दिए गए हैं

  1. कोऑर्डिनेटर लेआउट का उपयोग करें
  2. टूल बार के साथ किसी भी चीज को आप पतन (या छिपाना) करना चाहते हैं, तो ढेर हो जाता है टूलबेल लेआउट
  3. टूटी हुई टूलबार के बाद जो कुछ भी रहता है, वह बरकरार हो जाने के बाद AppBarLayout के अंदर जाता है।

पूर्व -

<android.support.design.widget.CoordinatorLayout
    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:background="@android:color/background_light"
    android:fitsSystemWindows="true"
    >

    <android.support.design.widget.AppBarLayout
        android:id="@+id/main.appbar"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/main.collapsing"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            >

            <ImageView
                android:id="@+id/main.backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                android:src="@drawable/material_flat"
                app:layout_collapseMode="parallax"
                />

            <android.support.v7.widget.Toolbar
                android:id="@+id/main.toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin"
                />
         <!-- ADD ANY THING THAT GETS SCROLLED ALL THE WAY UP WITH TOOLBAR -->
        </android.support.design.widget.CollapsingToolbarLayout>

     <!--- ADD TAB_LAYOUT HERE---> 

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

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:lineSpacingExtra="8dp"
            android:text="@string/lorem"
            android:padding="@dimen/activity_horizontal_margin"
            />
    </android.support.v4.widget.NestedScrollView>

    <android.support.design.widget.FloatingActionButton
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_margin="@dimen/activity_horizontal_margin"
        android:src="@drawable/ic_comment_24dp"
        app:layout_anchor="@id/main.appbar"
        app:layout_anchorGravity="bottom|right|end"
        />
</android.support.design.widget.CoordinatorLayout>




android-tablayout