5

Iのように定義RecyclerView有する:IアイテムRecyclerViewを追加するときしかし、それはapp:stackFromEnd="true"を尊重しないアプリ:RecyclerViewのstackFromEndがxmlで機能していませんか?

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

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

関連コードは、いずれかを使用するのが一般的です。一方、コメントを外してプログラムでlayoutManager.setStackFromEnd(true);を使用すると、正常に動作します。私が紛失している問題は何ですか?どんなアイディアも大歓迎です。

答えて

9

私は似たようなものに遭遇しました。問題は、RecyclerViewが膨張したときに属性を読み取るということです。

しかし、Javaコードで作成された新しいLinearLayoutManagerを割り当てています。この新しいマネージャには、stackFromEnd属性がtrue(デフォルトはfalse)に設定されていません。

stackFromEndはマネージャの属性であり、RecyclerViewではありません。私は管理者がインフレであなたのために作成されるかわからないんだので、あなたはapp:layoutManager属性を持っていないあなたのXMLコードで

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

:私の場合は

私はこれを持っています。

1

Androidには、app:stackFromEnd="true"が認識されないようです。多分あなたはそれを間違った場所に置いています。 setStackFromEnd(Boolean)は同じ仕事をしますが、プログラムで行います。文書によると

setStackFromBottom(boolean)

public void setStackFromBottom (boolean stackFromBottom) 

ため

public void setStackFromEnd(boolean stackFromEnd)

互換性のサポートAPIレベル1で追加されましたbottomからのスタックがtrueに設定されている場合、リスト はビューの下から順に内容を塗りつぶします。

パラメータの上端にビューのコンテンツをピンに、 下端にfalseをビューのコンテンツを固定するstackFromBottomtrue

これらを読む:

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

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

+0

アンドロイドは 'app:stackFromEnd =" true "'を認識しないことは明らかです。問題はなぜですか? – guness

関連する問題