Как сделать скругленные углы нижнего диалогового окна? - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь сделать верхние углы моего BottomSheetDialog скругленными, но мне не повезло ни с чем в Интернете. Вот как бы я хотел, чтобы это выглядело:

Rounded Modal Bottom Sheet

Независимо от того, что я пробовал, я получаю это:

Not rounded Modal Bottom Sheet

Я пробовал метод здесь и использовал shapeAppearanceLargeComponent (то, что я использую сейчас).

Вот мой код:

стилей. xml

 <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    ...
    <item name="shapeAppearanceLargeComponent">@style/CustomShapeAppearanceBottomSheetDialog</item>
</style>

<style name="CustomShapeAppearanceBottomSheetDialog" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSizeTopRight">16dp</item>
    <item name="cornerSizeTopLeft">16dp</item>
</style>

BottomNavMenuFragment:

public class BottomNavMenuFragment extends BottomSheetDialogFragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_bottom_nav_drawer, container, false);
    }
}

И вот как я показываю фрагмент:

BottomNavMenuFragment navFragment = new BottomNavMenuFragment();
navFragment.show(getSupportFragmentManager(), navFragment.getTag());

Ничего из того, что я делаю, похоже, не работает. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 3 ]

0 голосов
/ 30 мая 2020

Выполните следующие шаги, чтобы получить нижний лист с закругленными углами:

Шаг 1: Создайте файл rounded_top_corners.xml внутри drawable внутри *1006* папки

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/white"/>
    <corners android:topLeftRadius="8dp"
        android:topRightRadius="8dp"/>
</shape>

Шаг 2: Создайте стили ниже в styles.xml

 <style name="BottomSheetDialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
        <item name="bottomSheetStyle">@style/bottomSheetBackground</item>
    </style>

    <style name="bottomSheetBackground" parent="Widget.Design.BottomSheet.Modal">
        <item name="android:background">@drawable/rounded_top_corners</item>
    </style>

Шаг 3: Добавить стиль в BottomNavMenuFragment class

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

Это его стиль будет применен к нижнему листу.

0 голосов
/ 01 июня 2020

После того, как я поигрался с возможными решениями, опубликованными людьми, я понял, что мой код работает нормально, но углы моего NavigationView закрывали закругленные углы ящика. После добавления отступов скругленные углы отображаются правильно.

0 голосов
/ 30 мая 2020

Вы можете создать следующую фигуру в своем чертеже:

drawable / Round_corners. xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:shape="rectangle">
    <solid android:color="#fff"/>
    <corners 
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp"/>
</shape>

Затем для макета для нижнего листа вы можете добавить этот объект рисования в качестве свойства фона.

android:background="@drawable/rounded_corners"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...