Я наконец нашел ответ , который объяснил основы, которые вам нужно знать.
Пользовательский вид
Для примеров я использую SeekBarPreference
как пользовательский объект (Preference
и View
очень похожи)
Короче говоря, есть два способа установить стиль по умолчанию.
Либо задайте пользовательскую тему для своей деятельности (или тому подобное), которая связывает что-то с вашим пользовательским стилем (seekBarPreferenceStyle
), либо задайте стиль непосредственно с помощью style
атрибута XML.
Тема
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="seekBarPreferenceStyle">@style/LINK_TO_DEFINING_STYLE</item>
</style>
AndroidManifest.xml
<activity android:name=".SomeActivity" android:theme="@style/AppTheme">
Атрибут стиля
some.xml
<SeekBarPreference
[...]
style="@style/LINK_TO_DEFINING_STYLE"
[...] />
Androids Way
Но я хотел точно знать, как все это связано, чтобы потом работать без атрибутов style
в XML-файлах для SeekBarPreference
или других Preference
и View
объектов, предоставляемых Android.
Итак (через Android Studio) я проследовал Theme.AppCompat.Light.DarkActionBar
до его родителя Theme.Holo.Light
и посмотрел, что я там нашел:
<!-- ... -->
<item name="seekBarPreferenceStyle">@style/Preference.Holo.SeekBarPreference</item>
<!-- ... -->
Ссылка на этот стиль , который связывает ресурс макета:
<style name="Preference.Holo.SeekBarPreference">
<item name="layout">@layout/preference_widget_seekbar</item>
</style>
И, наконец, чтобы еще больше сбить вас с толку, Android, кажется, связывает стиль материала из вопроса вместо темы Holo из ответа на тему по умолчанию (будь то DeviceDefault
или что-то еще).
Так что, если у вас есть какие-либо подсказки, пожалуйста, не стесняйтесь добавлять к комментариям :)