XML에서 RecyclerView app : layoutManager =“”를 설정하는 방법은 무엇입니까?


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 8:28의

1
@dieter_h GridLayoutManager 예제로 답변을 제공 할 수 있습니까?
Ilya Gazman

4
사용할 수 있습니다 app:layoutManager="android.support.v7.widget.GridLayoutManager". 사 개 인수 생성자가 사용됩니다 ( Context, AttributeSet, int, int). 문서에 따르면 이것은 RecyclerView 속성 layoutManager에 의해 레이아웃 관리자가 XML로 설정 될 때 사용되는 생성자입니다. spanCount이 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:orientationtools:layoutManager)를 사용하여 추가 한 다음 IDE 미리보기에만 영향을 미치며 코드에서 해당 값을 계속 설정할 수 있습니다.


77
그리고 android:orientationRecyclerView 요소를 사용 하여 LinearLayoutManager의 방향을 제어 할 수 있습니다
androidguy

3
@Gabriele Mariotti 구현을 확인했으며 리플렉션을 사용합니다. 성능면에서 괜찮습니까?
Ahmad Fadli

4
GridLayoutManager를 사용하는 경우 더 많은 속성이 있습니까? 열 수 (spanCount)를 설정할 수 있습니까?
안드로이드 개발자

8
@androiddeveloper 예, 예를 들어 3 개의 열로 설정하려면 app : spanCount = "3"을 사용하십시오.
jauser

2
tools:layoutManager, tools:spanCount자동 완성 기능이 표시되지 않더라도 사용할 수 있으며 recyclerview 설정을 재정의하지 않으려는 경우 (또는 프로그래밍 방식으로 선호)
mochadwi

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
Gabriele Mariotti 답변에 추가 한 내용은 무엇입니까?
Ilya Gazman

4
코드 만 꽃밥 예를 들어있는 LinearLayout과 동등 무엇을 설명
미나 Fawzy

7
@UdiOshi 가로로 만들 android:orientation="horizontal"려면 RecyclerView xml 에 추가해야합니다
rf43

7
androidX에 대한 androidx.recyclerview.widget.LinearLayoutManager
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

향후 호환 가능한 접근 방식.
Abhinav Saxena 3

똑같이 ... 안드로이드 x는 이륙하려고합니다
로빈 후드

1
감사 spanCount합니다. 여기 에서 찾았습니다. 그 대답에
찬성 투표

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에서 "tools"를 사용해야한다고 생각합니다 ...


위의 XML에서 사용한 네임 스페이스 appsapp네임 스페이스 는 무엇입니까? Android resource linking failed - AAPT: error: attribute orientation내가 사용하면 빌드 시간 오류가 발생하기 때문에 app:orientation.
옴카

고맙지 만 여전히 잘못된 네임 스페이스입니다. 그것은해야합니다 android위해 orientation. app네임 스페이스 에서는 작동하지 않으며 다른 모든 것이 완벽합니다.
옴 카르

@Omkar 다시 수정하십시오. 죄송합니다. 업데이트되었습니다.
안드로이드 개발자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.