Занимавам се с цветови дефиниции на Android L, за да дефинирам редовете на ListView. Имам тема, която съдържа:
<item name="colorAccent">@color/color_blue_dark</item>
и в моя ред дефинирах друг:
<style name="DefaultRow">
<item name="colorAccent">@color/color_sand</item>
<item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
Ако приемем, че стойността на colorAccent ще бъде заменена. но това не важи, ако направя в моя ред:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
style="@style/DefaultRow"/>
Но работи, ако го направя:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/DefaultRow"/>
Каква е разликата? colorAccent
дефинира ли се, когато темата е приложена и не се отменя по-късно? Как да се реши това, за да има ретросъвместимост?
android:theme
се прилага към самия изглед, както и към неговите наследници. Вътрешно той създаваContextThemeWrapper
и раздува изгледа и неговите наследници спрямо този контекст. - person alanv   schedule 07.08.2015