2015-08-06 20 views
6

Bir ListView satırını tanımlamak için Android L renk tanımlarıyla uğraşıyorum. Ben sahip bir tema vardır:Tema ve stil öznitelikleri arasındaki farkı anlama

<item name="colorAccent">@color/color_blue_dark</item> 

ve benim üst üste bir tane tanımladığınız:

<style name="DefaultRow"> 
    <item name="colorAccent">@color/color_sand</item> 
    <item name="android:background">?android:attr/activatedBackgroundIndicator</item> 
</style> 

colorAccent değeri overriden olacağını varsayarsak.

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
      ... 
      style="@style/DefaultRow"/> 

enter image description here

Ama bunu yaparsam çalışır:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
       ... 
       android:theme="@style/DefaultRow"/> 

enter image description here

fark nedir benim satırda yaparsak ancak bu değil mi? Tema uygulandığında ve daha sonra geçersiz kılınmadığında colorAccent tanımlandı mı? Bu retro uyumluluk için nasıl çözülür?

+2

https://chris.banes.me/2014/11/12/theme-vs-style/ – alanv

+0

hakkındaki yorumları okuyun, ancak anladığım kadarıyla bu durumun neden olduğu konusunda hala net değilim. stilleri yerel olarak, soyundan gelenlere görünüm ve temalara uygulanır. Fakat bu, neden uygulandığı görünümün davranışını değiştiriyor? –

+1

“android: theme” özniteliği, görünümün kendisine ve torunlarına uygulanır. Dahili olarak, bir 'ContextThemeWrapper 'oluşturur ve görünümü ve onun torunları bu bağlama karşı şişirir. – alanv

cevap

0

TextView hiçbir colorAccent özellik değil. Bu bir tema özelliği.

+0

Aslında, ben, ben android: attr/activatedBackgroundIndicator arka planı için bir öznitelik olarak kullanıyorum ve http://stackoverflow.com/questions/15008150/how-does-androidattr-activatedbackgroundindicator-work bu yanıtı kullandığımı kabul ediyorum. back –

+0

içinde colorAccent kullanıyor Ama hala bir tema özelliği değil, stil özelliği. Bu yüzden stillerle çalışmayacak. Android 5 ve üstü sadece özellik –

İlgili konular