В Android Studio я объявил некоторые пользовательские стили с некоторыми пользовательскими атрибутами, как следующие два:Динамически извлекать пользовательские стили объявлены в «styles.xml»
<resources>
<!-- Base application theme. -->
<style name="AppThemeBlueDark" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/AppThemeBlueDarkColorPrimary</item>
<item name="colorPrimaryDark">@color/AppThemeBlueDarkColorPrimaryDark</item>
<item name="colorAccent">@color/AppThemeBlueDarkColorAccent</item>
<item name="android:colorBackground">@color/AppThemeBlueDarkBackground</item>
<item name="my_type">my_theme</item>
<item name="my_id">0</item>
<item name="my_name">Dark Blue</item>
<item name="my_default">true</item>
</style>
<style name="AppThemeBlueLight" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/AppThemeBlueLightColorPrimary</item>
<item name="colorPrimaryDark">@color/AppThemeBlueLightColorPrimaryDark</item>
<item name="colorAccent">@color/AppThemeBlueLightColorAccent</item>
<item name="android:colorBackground">@color/AppThemeBlueLightBackground</item>
<item name="my_type">my_theme</item>
<item name="my_id">1</item>
<item name="my_name">Light Blue</item>
<item name="my_default">false</item>
</style>
</resources>
Теперь я хочу, чтобы создать пользовательский класс Java который может извлекать все мои определенные стили без предварительного знания о том, сколько они и их имена; что-то вроде:
public class ThemeChanger {
// Populate myThemes
public void ThemeChanger() {
TypedArray theme_res = R.style.getStyleNames();
}
}
}
Очевидно, что метод "getStyleNames()" чистая фантазия!
Возможно ли это в какой-то мере?
Конечной целью является создание универсального многоразового класса, который сможет управлять и изменять темы приложения, просто определяя темы в стандартном «styles.xml», но с этими настраиваемыми атрибутами, без необходимости изменять класс если я решит использовать разные темы/имена.
Большое спасибо за любую помощь.
Несомненно, я ошибаюсь, но я не понимаю вашего ответа. Я не хочу применять этот стиль к пользовательскому представлению. Эти стили предназначены для тем. То, что я хочу сделать, - создать экземпляр этого класса в onCreate() основного действия. В конструкторе этого класса я хочу получить все стили, у которых есть пользовательский attr «my_type» = «my_theme», а затем получить их имена, my_id, my_name и my_default в массив. Этот массив будет использоваться для выбора menù для динамического изменения темы приложения. Таким образом, я могу повторно использовать этот класс во всех моих проектах без каких-либо изменений. Еще раз спасибо. –