XML से RecyclerView ऐप: लेआउटमैनेजर = "" कैसे सेट करें?


167

XML से RecyclerView LayoutManager कैसे सेट करें ?

    <android.support.v7.widget.RecyclerView
        app:layoutManager="???"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

प्रलेखन देखें: recyclerview: layoutManager
dieter_h

1
@dieter_h क्या आप GridLayoutManager उदाहरण के साथ उत्तर दे सकते हैं?
इल्या गज़मैन

4
आप उपयोग कर सकते हैं app:layoutManager="android.support.v7.widget.GridLayoutManager"। (चार तर्क के साथ निर्माता का उपयोग किया जाएगा Context, AttributeSet, int, int)। प्रलेखन के अनुसार, यह निर्माणकर्ता का उपयोग तब किया जाता है जब लेआउट प्रबंधक XML में RecyclerView विशेषता लेआउट प्रबंधक द्वारा सेट किया जाता है। यदि XML में स्पान्टकाउंट निर्दिष्ट नहीं है, तो यह एकल कॉलम में डिफॉल्ट करता है
thetonrifles

जवाबों:


269

जैसा कि आप डॉक्टर में जाँच कर सकते हैं:

उपयोग किए जाने का वर्ग नाम Layout Manager

कक्षा का विस्तार होना चाहिए androidx.recyclerview.widget.RecyclerViewView$LayoutManagerऔर हस्ताक्षर के साथ या तो एक डिफ़ॉल्ट निर्माता या निर्माता होना चाहिए(android.content.Context, android.util.AttributeSet, int, int)

यदि नाम ए से शुरू होता है '.', तो एप्लिकेशन पैकेज उपसर्ग है। एल्स, यदि नाम में ए है '.', तो क्लासनाम को पूर्ण श्रेणी का नाम माना जाता है। एल्स, रिसाइक्लर व्यू पैकेज ( androidx.appcompat.widget) उपसर्ग है

Androidx के साथ आप उपयोग कर सकते हैं:

<androidx.recyclerview.widget.RecyclerView
     xmlns:app="http://schemas.android.com/apk/res-auto"
     app:layoutManager="androidx.recyclerview.widget.GridLayoutManager">

साथ समर्थन लाइब्रेरी आप का उपयोग कर सकते हैं:

<android.support.v7.widget.RecyclerView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layoutManager="android.support.v7.widget.GridLayoutManager" >

इसके अलावा आप इन विशेषताओं को जोड़ सकते हैं:

  • android:orientation= "horizontal|vertical": LayoutManager के उन्मुखीकरण को नियंत्रित करने (जैसे: LinearLayoutManager)
  • app:spanCount: के लिए कॉलम की संख्या निर्धारित करने के लिए GridLayoutManager

उदाहरण:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
    app:spanCount="2"
    ...>

या:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    android:orientation="vertical"
    ...>

आप उन्हें toolsनामस्थान (यानी tools:orientationऔर tools:layoutManager) का उपयोग करके भी जोड़ सकते हैं और फिर यह केवल IDE पूर्वावलोकन को प्रभावित करता है और आप उन मानों को कोड में सेट करना जारी रख सकते हैं।


77
और आप android:orientationउदाहरण के लिए LinearLayoutManager
Androidguy

3
@ गैब्रिएल मैरीओटी I ने कार्यान्वयन की जाँच की और यह प्रतिबिंब का उपयोग करता है। क्या यह प्रदर्शन से ठीक है?
अहमद फदली

4
क्या मैं GridLayoutManager का उपयोग करने के मामले में अधिक उपलब्ध विशेषताएँ हैं? क्या इसके कॉलम (स्पैनकाउंट) को सेट करना संभव है?
Android डेवलपर

8
@androiddeveloper हाँ, उदाहरण के लिए इसे तीन स्तंभों में सेट करने के लिए ऐप का उपयोग करें: spanCount = "3"
jauser

2
आप इसका उपयोग भी कर सकते हैं tools:layoutManager, tools:spanCount(भले ही ऑटो-पूर्ण इसे प्रदर्शित नहीं करता है) और यदि आप अपने किसी भी
रिसाइकलव्यू

88

यदि आप इसका उपयोग करना चाहते हैं LinearLayoutManager

<android.support.v7.widget.RecyclerView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layoutManager="android.support.v7.widget.LinearLayoutManager" >

के बराबर है

LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
mRecyclerView.setLayoutManager(mLayoutManager);

2
गैब्रिएल मारीओटी के जवाब में आपका क्या कहना है?
इलैया गज़मैन

4
समझाएं कि कोड में क्या समतुल्य है लेकिन अन्य उदाहरण के साथ LinearLayout
Mina Fawzy

7
@ युधिष्ठी इसे क्षैतिज बनाने के लिए, आपको android:orientation="horizontal"RecyclerView xml
rf43

7
androidx.recyclerview.widget.LinearLayoutManager for androidX
frapeti

82

और मैं यहां androidxसंस्करण की तलाश में आया था हालांकि यह पता लगाना बहुत आसान था, यहां यह है

LinearLayoutManager:

app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

उदाहरण:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>

GridLayoutManager:

app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"

उदाहरण:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:spanCount="2"
    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/>

जैसा कि आप ऊपर के उदाहरणों में देख सकते हैं कि आप xmlउपयोग करने से उन्मुखीकरण को नियंत्रित कर सकते हैं

android:orientation="vertical"

तथा

android:orientation="horizontal"

और GridLayoutManager का उपयोग करके कॉलम की संख्या निर्धारित करने के लिए

app:spanCount="2"

10
आप कोई सेट कर सकते हैं। कॉलम का उपयोग जब आप GridLayoutManagerजोड़कर करते हैंapp:spanCount="2"
Pratik Butani

भविष्य के संगत दृष्टिकोण।
अभिनव सक्सेना

यहाँ भी ... Androidx के बारे में 🚀
रॉबिन हूड

1
धन्यवाद, मैं spanCountइसे यहां ढूंढ रहा था । यही कारण है कि उत्तर के लिए upvote :)
जिमित पटेल

16

मेरे द्वारा उपयोग किए जाने वाले सबसे आम हैं:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" 
    tools:listitem="@layout/grid_item"
    android:orientation="vertical" app:spanCount="3"/>

तथा:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    tools:listitem="@layout/grid_item"
    android:orientation="vertical"/>

यह सेट करने के लिए अनुशंसित है listitem , ताकि आप यह देख सकें कि लेआउट संपादक के पूर्वावलोकन में यह कैसे दिख सकता है।

यदि आप चाहते हैं कि ऑर्डर उलटा हो, तो मुझे लगता है कि आपको इसके बजाय कोड में करना होगा, और यदि आप वास्तव में कुछ देखना चाहते हैं तो XML में "टूल" का उपयोग करें ...


ऊपर के xml में आपने कौन सा नाम appsऔर appनामस्थान का उपयोग किया है? क्योंकि मैं समय त्रुटि का निर्माण कर Android resource linking failed - AAPT: error: attribute orientationरहा हूं, अगर मैं उपयोग करता हूं app:orientation
ओंकार

धन्यवाद, लेकिन फिर भी यह गलत नाम स्थान है। यह होना चाहिए androidके लिए orientation। यह appनामस्थान के साथ काम नहीं करता है बाकी सब कुछ सही है।
ओंकार

@ ओंकार फिर सही। माफ़ करना। अपडेट किया गया।
एंड्रॉइड डेवलपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.