App: stackFromEnd для RecyclerView не работает в xml?

У меня есть RecyclerView, определяемый как:

<android.support.v7.widget.RecyclerView android:id="@+id/message_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/message_input" android:layout_alignParentTop="true" app:stackFromEnd="true" /> 

Также используется общий код:

  LinearLayoutManager layoutManager = new LinearLayoutManager(this); //layoutManager.setStackFromEnd(true); mRecyclerView.setLayoutManager(layoutManager); 

Однако, когда я добавляю элемент RecyclerView , он не поддерживает app:stackFromEnd="true" . С другой стороны, если я раскомментирую и использую layoutManager.setStackFromEnd(true); Программно, он отлично работает. В чем проблема, которую мне не хватает? Любые идеи приветствуются.

Я столкнулся с чем-то подобным. Проблема в том, что когда RecyclerView раздувается, он читает атрибут.

Но тогда вы назначаете новый LinearLayoutManager, который создается в Java-коде. Этот новый менеджер не имеет атрибута stackFromEnd, установленного в true (по умолчанию false).

stackFromEnd – это атрибут менеджера, а не RecyclerView .

В моем случае у меня есть следующее:

 <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/list" app:stackFromEnd = "true" app:layoutManager="LinearLayoutManager" </android.support.v7.widget.RecyclerView> 

В вашем коде xml у вас нет атрибута app:layoutManager поэтому я не уверен, какой менеджер создан для вас при инфляции.

Кажется, Android не распознает app:stackFromEnd="true" . Возможно, вы положили его в неправильное место. setStackFromEnd(Boolean) выполняет ту же работу, но программно.

Согласно документации:

public void setStackFromEnd(boolean stackFromEnd)

Поддержка совместимости для setStackFromBottom(boolean)

а также

 public void setStackFromBottom (boolean stackFromBottom) 

Добавлен в уровень API 1. Если для стека снизу установлено значение true, список заполняет его содержимое, начиная со дна представления.

Параметры stackFromBottom true чтобы связать содержимое представления с нижним краем, false чтобы связать содержимое представления с верхним краем

Прочтите эти:

http://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager.html#getStackFromEnd ()

http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean)