Подтвердить что ты не робот

Как программно создать стиль темы Android?

Существует множество документов и руководств по созданию или настройке стиля темы Android через XML, но не удалось найти способ создать его в коде. Любые идеи о том, как создать стиль в коде, а не в XML?

Это пример XML, необходимо создать это программно в коде:

<resources>
  <style name="AppTheme" parent="android:Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:colorAccent">@color/accent</item>
  </style>
</resources>
4b9b3361

Ответ 1

короткий ответ: не работает  создать тему и задать в качестве темы приложения (даже если мы достигли создания объекта Theme) без идентификатора ресурса темы.

Детали:

когда вы вызываете setTheme, функция неэффектирует метод ContextWrapper,  который в конце вызывает AssetManager с указателем идентификатора ресурса, класс AssetManager содержит метод применения темы приложения, который является вызовом JNI

native static final void applyThemeStyle(long theme, int res, boolean force);

Как и выше, мы можем передавать идентификатор ресурса только для применения themestyle. Но возможны варианты

  • Хотя он ограничивается константами функции Window. Мы можем использовать setFeatureDrawable и константы функций, чтобы установить некоторые чертежи например, FEATURE_ACTION_BAR, FEATURE_CONTEXT_MENU и т.д.
  • Используя setTheme функцию из активности, мы можем установить тему из ресурса стиля, которая решит проблему, упомянутую в комментариях, с помощью AjaySharma и Nathan

Ответ 2

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

вы можете использовать это...