1

GoogleのRecyclerView documentationによれば、RecyclerViewの 'layoutManager'属性にクラス名を指定することで、レイアウトファイル内から特定のLayoutManagerを設定することができます。また、具体的にはLayoutManagerにはAttributeSetを受け入れるコンストラクタがあります。あなたはRecyclerViewの要素の属性を経由して、なく/どのようにあなたがLayoutManager自体を対象とする属性を設定しない独自の要素としてLayoutManagerを指定しているので、RecyclerViewの 'layourManager'属性で割り当てられたLayoutManagerの属性を指定するにはどうすればよいですか?

私の質問はありますか?

私の推測では、それらを直接RecyclerView要素に追加しています。これは、RecyclerViewのコンストラクタの内部では、 'layoutManager'属性に指定されたLayoutManagerをインスタンス化するときに渡された同じAttributeSetを単に通過させることができます。しかし、これは単なる推測です。すべての3つの属性が技術的にMyRecyclerView要素に設定されますが、思考がによって無視された第三属性であり、どのようにしている

<MyRecyclerView 
    app:layoutManager=".MyLayoutManager" 
    app:attrOnlyUsedByRecyclerView="I'm used by MyRecyclerView" 
    app:attrOnlyUsedByLayoutManager="I'm used by MyLayoutManager" /> 

注:ここでは

は正しい方法である私が考えているの例です MyRecyclerViewのコンストラクタから MyLayoutManagerのコンストラクタに渡されます。

私は今、その理論をテストするためのデモアプリケーションを作成しようとしていますが、その間に誰かが明確に明確にすることができますか?

答えて

1

少しのテストでは、関連する属性をRecyclerView要素に直接適用することができ、それらはLayoutManagerに渡されます。

/** 
* Constructor used when layout manager is set in XML by RecyclerView attribute 
* "layoutManager". Defaults to vertical orientation. 
* 
* @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_android_orientation 
* @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_reverseLayout 
* @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_stackFromEnd 
*/ 
public LinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, 
          int defStyleRes) { 
    Properties properties = getProperties(context, attrs, defStyleAttr, defStyleRes); 
    setOrientation(properties.orientation); 
    setReverseLayout(properties.reverseLayout); 
    setStackFromEnd(properties.stackFromEnd); 
    setAutoMeasureEnabled(true); 
} 

...とここにあなたがLayoutManagerのための「stackFromEnd」属性を指定する方法は次のとおりです。

は例えば、LinearLayoutManagerに関連するコンストラクタです。 (それはLayoutManager宛てだにもかかわらずRecyclerView要素でそれを設定していますどのように注意してください。)

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    app:layoutManager="android.support.v7.widget.LinearLayoutManager" 
    app:stackFromEnd="true" /> 
+0

パーフェクト!私はちょうどポイントを具体的に家に追いやるためにあなたのテキストを少し明確にしました。ありがとう!あなたがサイトに価値を追加していると感じる場合は、この質問にも投票してください。 – MarqueIV

関連する問題