Используйте разные стили для одного и того же элемента для разных действий в студии Android (пожалуйста, прочитайте описание)
Я работаю над проектом, который хочу использовать в разных видах деятельности. Но для разных действий я хочу, чтобы у диалогового окна был разный фон. Я установил возможность рисования фона, но это делает возможность рисования применимой для
это то, что мой
<resources xmlns:tools="http://schemas.android.com/tools">
<style>
<!-- Base application theme. -->
...
...
<!-- Customize your theme here. -->
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
</style>
<style name="AppBottomSheetDialogTheme"
parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppModalStyle</item>
</style>
<style name="AppModalStyle"
parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/top_rounded_corners</item> <!-- I want to change the backgroundDrawable here. -->
</style>
</resources>
Есть ли способ изменить рисование в зависимости от того, чем я занимаюсь. Я думал об использовании
1 ответ
Я нашел альтернативный способ решить свою проблему: я создал еще один экземпляр темы в
themes.xml
а затем измените ресурс для рисования в этом экземпляре (см. код ниже).
<style name="Theme.Blogaro" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
</style>
<style name="Theme.Blogaro.splash" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme.splash</item> ---> Made changes here
</style>
<style name="AppBottomSheetDialogTheme"
parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppModalStyle</item>
</style>
<style name="AppBottomSheetDialogTheme.splash"
parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppModalStyle2</item>
</style>
<style name="AppModalStyle"
parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/top_rounded_corners</item>
</style>
<style name="AppModalStyle2"
parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/top_rounded_corners_splash</item>
</style>
Затем я программно меняю тему по умолчанию внутри
onCreate
в моем
Activity.java
:
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Blogaro_splash);
setContentView(R.layout.activity_splash_screen);