如何在片段中设置主题扩展BottomSheetDialogFragment?

时间:2018-01-06 18:11:33

标签: android android-fragments

我有一个应用程序,其中我有一个MainActivity,其中包含一个扩展BottomSheetDialogFragment的片段。我想设置片段主题,但它保持不变。请帮助

扩展BottomSheetDialogFragment的片段代码: -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottomSheet"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:theme="@style/CoffeeDialog">

<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/img_Camera"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_gravity="center_horizontal|bottom"
    android:layout_marginTop="10dp"
    android:src="@drawable/amazon"
    app:civ_border_color="@color/textColor"
    app:civ_border_width="5dp"
    app:civ_fill_color="@color/colorPrimary" />

<android.support.v7.widget.RecyclerView
    android:id="@+id/notification_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="8dp" />

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="30dp">

</FrameLayout>

这里我使用的是android:theme =&#34; @ style / CoffeeDialog&#34;但它没有用。

主题代码: -

  <style name="CoffeeDialog" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="android:windowCloseOnTouchOutside">false</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:colorBackground">@android:color/transparent</item>
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:backgroundDimAmount">0.3</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
</style>

注意: - 我只想更改片段主题,而不是MainActivity。

2 个答案:

答案 0 :(得分:8)

尝试下面给出的代码

 public class CustomDialogFragment extends BottomSheetDialogFragment {

      @Override
      public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NORMAL, R.style.CoffeeDialog);
      }

      ...
    }

CoffeeDialog将成为添加到styles.xml

的主题

答案 1 :(得分:0)

在您的片段中使用 getTheme 方法添加您的主题 像这样:

override fun getTheme(): Int {
        return R.style.CustomBottomSheetDialog
    }