Не удается изменить фон кнопки после применения фона 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 ответа

Попробуй это :

  1. если ваша основная тема - 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>
  1. если ваша основная тема: 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» в своем коде.

Другие вопросы по тегам