2016-08-22 8 views
7

RecyclerViewの汎用スタイルパラメータをテーマに実装しようとしています。 ListViewとは対照的に、私はこのようなものを使用する:これは完全に正常に動作テーマレベルでのRecyclerViewスタイリング

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

:私のカスタムテーマで使用

<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> 

以降:

は、スタイルを定義しますListView。しかし、私はRecyclerViewのためにこれを反映することができません、それはどのタイプのリストでもうまくいくと思いました。

したがって、RecyclerViewに使用できる定義済みのスタイル属性はありますか?android:recyclerViewStyleなどですか?

もしそうでなければ、どのようにテーマレベルでこれを達成できますか?

+0

かもしれませのhttp:// stackoverflowの.com/a/24580870/1920735がお手伝いできます。 – avinash

答えて

5

残念なことにRecylerViewlistViewStyleに相当するものはありません。

RecyclerViewのスタイルを定義してから、そのスタイルを使用したいビューがあれば、style="@style/RecyclerViewStyle"を使用してください(あなたの例のようにいくつかの属性を定義したい場合)。

RecyclerViewごとにそれを行う必要がない場合は、それをサブクラス化して、コンストラクタ内でdefStyleのゼロ以外のパラメータを返す必要があります。あなたは、XMLであなたのRecyclerViewのすべてのインスタンスを新しくサブクラス化されたクラスに置き換える必要があります。

1

@Jasonロビンソンは、あなたが、この方法でRecyclerViewをサブクラス化するXMLでRecyclerViewStyleableRecyclerViewを交換し、その後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); 
    } 
} 
関連する問題