如何为通过RecyclerView的'layourManager'属性分配的LayoutManager指定属性?

时间:2017-10-15 16:47:44

标签: android android-layout android-recyclerview recyclerview-layout

根据Google的RecyclerView documentation,您可以在布局文件中设置特定的LayoutManager,方法是在RecyclerView的'layoutManager'属性中指定其类名。它还特别提到LayoutManager有一个接受AttributeSet的构造函数。

我的问题是,因为您通过LayoutManager元素上的属性指定RecyclerView,而不是作为自己的元素,在哪里/如何设置{的目标属性{1}}本身?

我猜您也可以将它们直接添加到LayoutManager元素中。这在RecyclerView的构造函数内部是有意义的,当它实例化'layoutManager'属性中指定的RecyclerView时,它可以简单地传递传入的LayoutManager {它。但是,这只是猜测。

以下是我正在思考的正确方法的一个例子:

AttributeSet

注意所有三个属性是如何在<MyRecyclerView app:layoutManager=".MyLayoutManager" app:attrOnlyUsedByRecyclerView="I'm used by MyRecyclerView" app:attrOnlyUsedByLayoutManager="I'm used by MyLayoutManager" /> 元素上进行技术设置的,但思考是第三个属性被忽略,并从MyRecyclerView的构造函数传递到MyRecyclerView'构造函数。

我正在尝试构建一个演示应用程序来测试该理论,但与此同时,任何人都可以肯定地澄清,或者至少指出我的方向是否正确?

1 个答案:

答案 0 :(得分:1)

基于一些测试,您似乎可以直接将相关属性应用于conda元素,并将它们传递给RecyclerView

例如,LayoutManager的相关构造函数是:

LinearLayoutManager

...以及如何指定&#39; stackFromEnd&#39; /** * 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元素上设置它的,即使它是RecyclerView的。{/ p>

LayoutManager