2016-08-22 14 views
7

RecyclerView için tema düzeylerinde genel stil parametrelerini uygulamaya çalışıyorum. Bu mükemmel çalışıyorRecyclerViewGörüntü seviyesinde styling

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

: benim özel tema kullanılan sonradan

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

ve:

bir stil Tanımlı: ListView aksine olarak, böyle bir şey kullanılmış ListView için. Ancak, bunu herhangi bir liste için çalışacağını düşündüğüm için RecyclerView için bunu yansıtamıyorum.

Yani, örneğin android:recyclerViewStyle veya herhangi bir şey için RecyclerView uygun herhangi önceden tanımlanmış stil niteliği vardır?

Değilse, bunu tema düzeyinde nasıl başarabilirim?

+0

olabilir http: // stackoverflow .com/a/24580870/1920735 yardımcı olabilir. – avinash

cevap

5

Maalesef, RecylerView için listViewStyle eşdeğeri yok.

Yapabileceğinin en iyi yolu, RecyclerView için bir stil tanımlamak, daha sonra bu stil kullanımını kullanmak istediğiniz görünümlere sahip olmak (style="@style/RecyclerViewStyle" (yalnızca örneğinizde olduğu gibi birkaç özniteliği tanımlamak istiyorsanız) olduğunu düşünüyorum.

Gerçekten de her RecyclerView için bunu yapmak zorunda kalmazsanız, alt sınıfı ayırmanız ve yapıcıda defStyle için sıfır olmayan bir parametre döndürmeniz gerekir. Yine de, RecyclerView'unuzun tüm örneklerini yeni alt sınıflarınızla değiştirmelisiniz.

1

@Jason Robinson Eğer bu şekilde RecyclerView alt sınıf xml RecyclerViewStyleable ile RecyclerView yerine ve sonra recyclerViewStyle

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

ile stil ekleyebilirsiniz söylediği gibi -

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); 
    } 
} 
İlgili konular