При стилизации ActionBarSherlock мне было интересно, когда я должен использовать атрибут с префиксом, когда атрибут без префикса, а когда и то, и другое. Например:
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
Я нашел это объяснение на веб-сайте ActionBarSherlock:
Зеркальные атрибуты
Из-за ограничений в системе тем Android любые настройки темы должны быть объявлены в двух атрибутах. Обычные атрибуты с префиксом Android применяют тему к собственной панели действий, а атрибуты без префикса предназначены для пользовательской реализации. Поскольку оба тематических API совершенно одинаковы, вам нужно всего лишь дважды ссылаться на свои настройки, а не реализовывать их дважды.
Самый простой способ передать, что именно это влечет за собой, — это пример. Ниже приведена полная тема из упомянутого выше примера «Styled»:
<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/bg_striped</item>
<item name="android:background">@drawable/bg_striped</item>
<item name="backgroundSplit">@drawable/bg_striped_split</item>
<item name="android:backgroundSplit">@drawable/bg_striped_split</item>
</style>
Я думал, что атрибуты без префикса должны использоваться только для атрибутов, которых не существовало до уровня API 11. Но почему в примере есть атрибут android:background
, а также атрибут background
? android:background
существует с уровня API 1. Может ли кто-нибудь дать более подробную информацию об этих зеркальных атрибутах?