Я использую BottomSheetDialogFragment
и скругляю углы вверху справа/слева, и это работает правильно, но я заметил, что за закругленными углами он не прозрачен, и это очень раздражает.
Это заметно на скриншоте ниже:
Как сделать их прозрачными?
Я использую BottomSheetDialogFragment
и скругляю углы вверху справа/слева, и это работает правильно, но я заметил, что за закругленными углами он не прозрачен, и это очень раздражает.
Это заметно на скриншоте ниже:
Как сделать их прозрачными?
Создайте собственный стиль, как показано ниже.
<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/rounded_corner_top_only</item>
</style>
затем переопределите этот метод в пользовательском фрагменте.
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//bottom sheet round corners can be obtained but the while background appears to remove that we need to add this.
setStyle(DialogFragment.STYLE_NO_FRAME,R.style.AppBottomSheetDialogTheme);
}
Это работает со мной, надеюсь, это сработает с вами.
Вы должны изменить bottom sheet theme
, чтобы получить верхнюю круглую компоновку.
Создайте собственный drawable background_bottom_sheet_dialog_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<padding android:top="0dp" />
<solid android:color="@color/white" />
</shape>
Затем переопределите bottomSheetDialogTheme в styles.xml, используя рисунок в качестве фона:
<!--Bottom sheet-->
<style name="BottomSheet" parent="@style/Widget.Design.BottomSheet.Modal">
<item
name="android:background">@drawable/background_bottom_sheet_dialog_fragment
</item>
</style>
<style name="BaseBottomSheetDialog"
parent="@style/Theme.Design.Light.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="bottomSheetStyle">@style/BottomSheet</item>
</style>
<style name="BottomSheetDialogTheme" parent="BaseBottomSheetDialog" />
Это изменит макет фона вашего нижнего листа.
ПРИМЕЧАНИЕ. Удалите весь фон из макета диалогового окна нижнего листа.
Переопределите это в своем BottomSheetDialogFragment
@Override
public void setupDialog(Dialog dialog, int style) {
View view = View.inflate(getContext(), R.layout.YOUR_LAYOUT, null);
dialog.setContentView(view);
((View) view.getParent()).setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
com.sothree.slidinguppanel:library:3.4.0
в своем приложении. - person Ajay Mehta   schedule 08.01.2019getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
в методonStart()
в вашем классеBottomSheetDialogFragment
. - person Amrdroid   schedule 08.01.2019