XML'den RecyclerView app: layoutManager = “” nasıl ayarlanır?


167

XML'den RecyclerView layoutManager nasıl ayarlanır ?

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


1
@dieter_h GridLayoutManager örneğiyle cevap verebilir misiniz?
Ilya Gazman

4
Kullanabilirsiniz app:layoutManager="android.support.v7.widget.GridLayoutManager". Dört bağımsız değişken ile yapıcı kullanılacak ( Context, AttributeSet, int, int). Belgelere göre bu, düzen yöneticisi XML'de RecyclerView özniteliği layoutManager tarafından ayarlandığında kullanılan yapıcıdır. XML'de spanCount belirtilmezse, varsayılan olarak tek bir sütuna sahiptir
Şubat'ta

Yanıtlar:


269

Dokümanı kontrol edebileceğiniz gibi:

Kullanılacak sınıf adı Layout Manager.

Sınıf androidx.recyclerview.widget.RecyclerViewView$LayoutManager, imzalı varsayılan bir kurucuya veya kurucuya sahip olmalı ve bunlara sahip olmalıdır(android.content.Context, android.util.AttributeSet, int, int)

Ad bir ile başlıyorsa '.', uygulama paketinin önüne eklenir. Aksi takdirde, ad a içeriyorsa '.', sınıf adının tam sınıf adı olduğu varsayılır. Aksi takdirde, geri dönüşüm görüntüleme paketi ( androidx.appcompat.widget)

Androidx ile şunları kullanabilirsiniz:

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

İle destek kütüphaneleri kullanabilirsiniz:

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

Ayrıca bu özellikleri ekleyebilirsiniz:

  • android:orientation= "horizontal|vertical": LayoutManager yönünü kontrol etmek için (örneğin: LinearLayoutManager)
  • app:spanCount: için sütun sayısını ayarlamak için GridLayoutManager

Misal:

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

veya:

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

Ayrıca toolsad alanını (yani tools:orientationve tools:layoutManager) kullanarak da ekleyebilirsiniz ve daha sonra yalnızca IDE önizlemesini etkiler ve bu değerleri kodda ayarlamaya devam edebilirsiniz.


77
Ve kullanabilirsiniz android:orientationmesela LinearLayoutManager yönünü kontrol etmek RecyclerView elemana
androidguy

3
@Gabriele Mariotti Uygulamayı kontrol ettim ve yansıma kullanıyor. Performans açısından akıllıca olur mu?
Ahmad Fadli

4
GridLayoutManager kullanmam durumunda daha fazla özellik var mı? Sütun sayısını (spanCount) ayarlamak mümkün müdür?
android geliştirici

8
@androiddeveloper Evet, örneğin üç sütuna ayarlamak için app kullanın: spanCount = "3"
jauser

2
Ayrıca kullanabilirsiniz tools:layoutManager, tools:spanCount(otomatik tamamlama gösterilmese bile) ve geri dönüşüm görünümü ayarlarınızdan herhangi birini geçersiz kılmak istemiyorsanız (veya programlı olarak tercih
ederseniz

88

ile kullanmak istiyorsanız LinearLayoutManager

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

buna eşdeğer

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

2
Gabriele Mariotti'nin yanıtı nedir?
Ilya Gazman

4
kodda ne kadar eşdeğer olduğunu ancak başka bir örnekle açıklayın LinearLayout
Mina Fawzy

7
@UdiOshi yatay hale getirmek android:orientation="horizontal"için RecyclerView
xml'ye

7
androidX için androidx.recyclerview.widget.LinearLayoutManager
frapeti

82

Ve buraya androidxsürüm bulmak için geldim ama anlaması oldukça kolaydı, işte burada

LinearLayoutManager:

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

Misal:

<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"

Misal:

<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"/>

Yukarıdaki örneklerde de görebileceğiniz gibi, yönlendirmeyi xmlkullanarak içeriden kontrol edebilirsiniz

android:orientation="vertical"

ve

android:orientation="horizontal"

Ve kullanarak GridLayoutManager için sütun sayısını ayarlamak için

app:spanCount="2"

10
Hayır ayarlayabilirsiniz. GridLayoutManagerekleyerek kullandığınızda sütun sayısıapp:spanCount="2"
Pratik Butani

geleceğe uyumlu yaklaşım.
Abhinav Saxena

İşte burada ... Androidx about
Robin Hood,

1
spanCountBurada bulduğum için teşekkürler . Thats neden cevap için :)
Jimit Patel

16

Kullandığım en yaygın olanları:

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

Ve:

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

listitemDüzen düzenleyicinin önizlemesinde nasıl görünebileceğini görebilmeniz için ayarlanması önerilir .

Eğer sipariş ters olsa da istiyorum, bunun yerine kodda yapmak ve gerçekten bir şey görmek istiyorsanız XML "araçları" kullanmak gerektiğini düşünüyorum ...


hangi appsve appad alanları Yukarıdaki xml kullanmış? Ben yapı zamanı hatası alıyorum çünkü Android resource linking failed - AAPT: error: attribute orientationben kullanırsanız app:orientation.
Omkar

teşekkürler, ama yine de yanlış isim alanı. Öyle olmalı androidiçin orientation. appAd alanı ile çalışmaz, her şey mükemmeldir.
Omkar

@Omkar Tekrar düzeltin. Afedersiniz. Güncellenmiş.
android geliştirici
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.