Не удается изменить фон кнопки после применения фона BottomSheetDialogFragment
Мне нужны были закругленные углы на моем BottomSheetDialogFragment, поэтому я применил настраиваемый объект для рисования в качестве фона. Но после применения настраиваемого фона кнопка на BottomSheet не принимает настраиваемый фон. Он просто отображает белый фон. backgroundTint отлично работает и меняет цвет кнопки.
themes.xml:
<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/add_new_bg</item>
</style>
add_new_bg.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="@color/background"/>
<corners
android:topLeftRadius="40dp"
android:topRightRadius="40dp"/>
</shape>
Код BottomSheetDialogFragment:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NORMAL, R.style.AppBottomSheetDialogTheme);
}
2 ответа
Попробуй это :
- если ваша основная тема - Theme.AppCompat.Light :
пример :
<style name="Theme.YourAppName" parent="Theme.AppCompat.Light">
<!-- Primary brand color. -->
<!-- Customize your theme here. -->
</style>
и ваша кнопка:
<Button <------ material button type
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/buttonTheme" <---- add this
android:text="MyButton"/>
добавьте это в свой themes.xml под основной темой
<style name="buttonTheme" parent="Theme.MaterialComponents.Light">
<item name="theme">@style/buttonTheme</item>
<item name="android:textColor">@color/white</item>
<item name="android:background">@color/black</item>
</style>
- если ваша основная тема: Theme.MaterialComponents
пример :
<style name="Theme.RecyclerView" parent="Theme.MaterialComponents.Light">
<!-- Primary brand color. -->
<!-- Customize your theme here. -->
</style>
но ваша кнопка использует:
<androidx.appcompat.widget.AppCompatButton <<<<--- appcompact button
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/buttonTheme"
android:text="MyButton"/>
затем добавьте :
<style name="buttonTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="theme">@style/buttonTheme</item>
<item name="android:textColor">@color/white</item>
<item name="android:background">@color/black</item>
</style>
темы с типом кнопки должны быть одного типа.
дайте мне знать, работает ли это для вас .. и проголосуйте за :)
Посмотрите, хотите ли вы применить только цвет фона к кнопке на нижнем листе. Просто используйте оттенок фона «YOUR_COLOR_CODE» в своем коде.