Tôi đang xử lý các định nghĩa màu của Android L để xác định các hàng của một ListView. Tôi có một chủ đề trong đó có:Hiểu sự khác biệt giữa thuộc tính chủ đề và kiểu dáng
<item name="colorAccent">@color/color_blue_dark</item>
và trong hàng của tôi, tôi đã xác định một khác:
<style name="DefaultRow">
<item name="colorAccent">@color/color_sand</item>
<item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
Giả sử rằng giá trị colorAccent sẽ được ghi đè. nhưng điều đó không nếu tôi làm trong hàng của tôi:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
style="@style/DefaultRow"/>
Nhưng nó hoạt động nếu tôi làm:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/DefaultRow"/>
sự khác biệt là gì? là colorAccent
đang được xác định khi chủ đề được áp dụng và không được ghi đè sau? Làm thế nào để giải quyết điều này để có khả năng tương thích?
Đọc https://chris.banes.me/2014/11/12/theme-vs-style/ – alanv
cảm ơn nhận xét, nhưng tôi vẫn chưa rõ tại sao điều này lại xảy ra, theo như tôi hiểu , kiểu được áp dụng cục bộ cho chế độ xem và chủ đề cho con cháu của nó. Nhưng tại sao điều này lại thay đổi hành vi trên chính chế độ xem khi nó đang được áp dụng? –
Thuộc tính 'android: theme' được áp dụng cho chính chế độ xem cũng như con cháu của nó. Bên trong, nó tạo ra một 'ContextThemeWrapper' và thổi phồng khung nhìn và con cháu của nó dựa vào ngữ cảnh đó. – alanv