web-dev-qa-db-ja.com

RecyclerView app:layoutManager = ""をXMLから設定する方法?

XMLから RecyclerView layoutManagerを設定するにはどうすればいいですか?

    <Android.support.v7.widget.RecyclerView
        app:layoutManager="???"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"/>
127
Ilya Gazman

あなたがチェックすることができるように 文書の中で

使用するレイアウトマネージャのクラス名.

このクラスは、Android.support.v7.widget.RecyclerView $ LayoutManagerを拡張し、デフォルトのコンストラクターまたは署名付きのコンストラクター(Android.content.Context、Android.util.AttributeSet、int、int)のいずれかを持つ必要があります。

名前が「。」で始まる場合は、アプリケーションパッケージのプレフィックスが付けられます。それ以外の場合、名前に「。」が含まれていると、クラス名は完全なクラス名と見なされます。そうでない場合は、リサイクラービューのパッケージ名(Android.support.v7.widget)がプレフィックスとして付けられます。

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

Androidxを使用すると、使用できます。

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

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);
74
Mina Fawzy

androidxname__バージョンを探すのは簡単ですが、ここにあります。

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

上の例でわかるように、xmlname__内から方向を制御できます。

Android:orientation="vertical"

そして

Android:orientation="horizontal"

また、GridLayoutManagerを使用して列数を設定します。

app:spanCount="2"
42
Max

私が使用する最も一般的なものは以下のとおりです。

<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で「ツール」を使用する必要があります。

9