У меня есть экран входа в систему, который по-разному используется для разных построений моего приложения. Мне нужно, чтобы фоновое изображение было другим в файле макета для этого экрана, поэтому я хочу указать на другой стиль для контейнера верхнего уровня. Я немного не понимаю, как это сделать.Как ссылаться на стиль в пользовательской теме
Я объявил styleable что-то вроде:
<resources>
<declare-styleable name="ThemeBase">
<attr name="loginPageContainerStyle" format="reference" />
</declare-styleable>
</resources>
У меня есть несколько различных тем для приложения, как например:
<resources>
<style name="ThemeBase" parent="android:style/Theme.Light" />
<style name="ThemeOne" parent="ThemeBase">
<item name="loginPageContainerStyle">@style/loginPageContainerThemeOne</item>
</style>
<style name="ThemeTwo" parent="ThemeBase">
<item name="loginPageContainerStyle">@style/loginPageContainerThemeTwo</item>
</style>
</resources>
И я определил следующие стили:
<resources>
<style name="loginPageContainerThemeOne">
<item name="android:background">@drawable/background_theme_one</item>
</style>
<style name="loginPageContainerThemeTwo">
<item name="android:background">@drawable/background_theme_two</item>
</style>
</resources>
И, наконец, файл login.xml примерно так:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loginRoot"
style= [ ? WHAT GOES HERE ? ]
android:gravity="center_horizontal"
android:orientation="horizontal">
[ LAYOUT STUFF ... ]
</LinearLayout>
Я делаю что-то неправильно? Это можно сделать так?
Отличный пример с темой и стилями для Android. Просто нужно упомянуть, что на AndroidManifest на теге приложения нужно добавить android: theme = "@ style/ThemeOne" или android: theme = "@ style/ThemeTwo", и это все, что нам нужно знать о темах – Ragaisis
Большое спасибо. Именно то, что я искал. – dentex