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);
программно, он отлично работает. В чем проблема, которую я упускаю? Любые идеи приветствуются.
2 ответов
я столкнулся с чем-то подобным. Проблема в том, что когда 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/widget/AbsListView.html#setStackFromBottom(boolean)