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"/>
Ama bunu yaparsam çalışır:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/DefaultRow"/>
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?
https://chris.banes.me/2014/11/12/theme-vs-style/ – alanv
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? –
“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