在主题级别的RecyclerView造型

我试图在主题级别实现RecyclerViewgenerics样式参数。 和ListView ,我用了这样的东西:

定义一种风格:

 <style name="StyleListView" parent="Widget.AppCompat.ListView"> <item name="android:requiresFadingEdge">vertical</item> <item name="android:fadingEdgeLength">10dp</item> <item name="android:scrollbars">vertical</item> </style> 

后来在我的自定义主题中使用:

 <item name="android:listViewStyle">@style/StyleListView</item> 

这对ListView工作得很好。 然而,我无法反映这个RecyclerView因为我认为它适用于任何types的列表。

那么,是否有任何预定义的风格属性可用于RecyclerView ,例如android:recyclerViewStyle或任何东西?

如果不是,那么我怎样才能达到这个主题?

Solutions Collecting From Web of "在主题级别的RecyclerView造型"

不幸的是,对于RecylerView ,没有与listViewStyle等价的RecylerView

我认为你可以做的最好的是为你的RecyclerView定义一个风格,然后让你想要使用这个风格的视图使用style="@style/RecyclerViewStyle" (如果你只是想要定义一些像你的例子一样的属性)。

如果你真的不想为每个RecyclerView做这件事,那么你必须defStyle它,并在构造函数中为defStyle返回一个非零参数。 尽pipe如此,您必须用您的新子类来replace您的RecyclerView所有实例。

由于@Jason Robinson说你可以用这种方法inheritanceRecyclerView,所以用RecyclerViewStyleablereplaceRecyclerView ,然后用recyclerViewStyle

 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="RecyclerViewStyleable"> <attr name="recyclerViewStyle"/> </declare-styleable> </resources> 

 public class RecyclerViewStyleable extends RecyclerView { public RecyclerViewStyleable(Context context) { super(context); } public RecyclerViewStyleable(Context context, AttributeSet attrs) { this(context, attrs, R.attr.recyclerViewStyle); } public RecyclerViewStyleable(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } }