如何在模糊背景的同时将卡片视图显示为对话

Posted

技术标签:

【中文标题】如何在模糊背景的同时将卡片视图显示为对话【英文标题】:How show cardview as a dilouge while bluring the background 【发布时间】:2021-12-15 15:48:15 【问题描述】:

我有一个带有 2 个单选按钮的卡片视图,我想将其显示为对话

我想实现多个目标

    将卡片视图显示为对话 在显示对话框时模糊背景布局 我有 2 个单选按钮(只有一个可选)我希望在选择其中一个后对话框会消失,但不会立即消失,至少应该有一个短暂的延迟,以便用户可以看到单选按钮的选择李>

注意:- 如果您想要更多代码参考,请告诉我,我会 如您所见,更新问题我力求包括fragment_home java 文件,所以问题不会变得冗长和混乱

这是布局

sort_image.xml

<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    android:layout_gravity="center"
    android:backgroundTint="@color/grey"
    app:cardCornerRadius="20dp">

    <RelativeLayout
        android:layout_
        android:layout_>

        <TextView
            android:id="@+id/sort_textView"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"
            android:layout_centerInParent="true"
            android:layout_marginTop="5dp"
            android:fontFamily="@font/roboto"
            android:text="Sort by"
            android:textAlignment="center"
            android:textColor="@color/lite_grey"
            android:textSize="25sp" />

        <com.google.android.material.card.MaterialCardView
            android:id="@+id/divider_line_sort_by"
            android:layout_
            android:layout_
            android:layout_below="@id/sort_textView"
            android:layout_marginStart="10dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="10dp"
            android:backgroundTint="@color/lite_grey"
            app:cardCornerRadius="50dp" />

        <RelativeLayout
            android:layout_
            android:layout_
            android:layout_centerInParent="true">

            <TextView
                android:id="@+id/latest_sort_textView"
                android:layout_
                android:layout_
                android:layout_marginStart="30dp"
                android:layout_marginTop="30dp"
                android:fontFamily="@font/roboto"
                android:text="Latest"
                android:textAlignment="center"
                android:textColor="@color/lite_grey"
                android:textSize="25sp" />

            <TextView
                android:id="@+id/most_popular_sort_textView"
                android:layout_
                android:layout_
                android:layout_below="@+id/latest_sort_textView"
                android:layout_alignParentStart="true"
                android:layout_centerInParent="true"
                android:layout_marginStart="30dp"
                android:layout_marginTop="25sp"
                android:fontFamily="@font/roboto"
                android:text="Most Popular"
                android:textAlignment="center"
                android:textColor="@color/lite_grey"
                android:textSize="25sp" />

            <RadioGroup
                android:layout_
                android:layout_
                android:layout_alignParentEnd="true">

                <RadioButton
                    android:id="@+id/latest_sort_radio_button"
                    android:layout_
                    android:layout_
                    android:layout_marginTop="25sp" />

                <RadioButton
                    android:id="@+id/most_popular_sort_radio_button"
                    android:layout_
                    android:layout_
                    android:layout_marginTop="10dp" />

            </RadioGroup>

        </RelativeLayout>


    </RelativeLayout>

</com.google.android.material.card.MaterialCardView>

fragment_home.xml // 此布局包含我想要的文本,当按下时我会打开对话,这也是我想要在显示对话时模糊的片段/布局

注意:- 仅包含此布局的必要代码

<com.google.android.material.card.MaterialCardView
                android:id="@+id/sort"
                android:layout_
                android:layout_
                android:layout_centerInParent="true"
                android:layout_marginEnd="5dp"
                android:layout_marginBottom="5dp"
                android:layout_toStartOf="@id/divider_line"
                android:backgroundTint="@color/black"
                android:elevation="6dp"
                android:paddingBottom="10dp"
                android:textAlignment="center"
                app:cardCornerRadius="10dp">

                <TextView
                    android:id="@+id/sort_text"
                    android:layout_
                    android:layout_
                    android:layout_marginStart="8dp"
                    android:layout_marginEnd="8dp"
                    android:layout_marginBottom="5dp"
                    android:fontFamily="@font/roboto"
                    android:text="@string/sort"
                    android:textAlignment="center"
                    android:textColor="@color/white"
                    android:textSize="17sp"
                    android:textStyle="bold" />

            </com.google.android.material.card.MaterialCardView>

【问题讨论】:

【参考方案1】:

我认为您需要使用对话框片段。您可以在官方文档https://developer.android.com/guide/fragments/dialogs

中阅读更多相关信息

【讨论】:

以上是关于如何在模糊背景的同时将卡片视图显示为对话的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中将模糊效果作为背景?

模糊Android中的对话框

如何在 Android 中设置背景图像并将该图像适合整个卡片以用于卡片视图?

如何将参数传递给 DataTrigger?

SwiftUI - 如何模糊视图的默认背景颜色?

iOS,iOS9+ 提供的原生模糊视图效果?