根据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
'构造函数。
我正在尝试构建一个演示应用程序来测试该理论,但与此同时,任何人都可以肯定地澄清,或者至少指出我的方向是否正确?
答案 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