2016-08-22 60 views
7

我試圖實現RecyclerView的通用樣式參數主題級別。作爲對比ListView,我用的是這樣的:在主題級別的RecyclerView造型

定義的樣式:

<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,因爲我認爲它適用於任何類型的列表。

那麼,是否有任何可用於RecyclerView的預定義樣式屬性,例如android:recyclerViewStyle什麼?

如果不是,那麼我怎麼能在主題級別實現這一點?

+0

可能是http://計算器.com/a/24580870/1920735可以提供幫助。 – avinash

回答

5

不幸的是,RecylerView沒有相當於listViewStyle

我認爲你能做的最好的是定義一個風格爲您RecyclerView,那麼必須要使用樣式使用style="@style/RecyclerViewStyle"(如果你只是想確定一對夫婦在你的榜樣屬性等)的意見爲準。

如果你真的不想爲每個RecyclerView都這樣做,那麼你必須對它進行子類化,並在構造函數中爲defStyle返回一個非零參數。不過,您必須將XML中的RecyclerView的所有實例替換爲新的子類。

1

由於@Jason羅賓遜說,你可以用這種方式繼承RecyclerView,在XML與RecyclerViewStyleable取代RecyclerView,然後用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); 
    } 
}