📜  Android 中 Modal 和 Persistent Bottom Sheet 的区别(1)

📅  最后修改于: 2023-12-03 14:39:09.357000             🧑  作者: Mango

Android 中 Modal 和 Persistent Bottom Sheet 的区别

在 Android 中,Modal 和 Persistent Bottom Sheet 都是常用的 UI 组件。它们各自有着不同的使用场景和特点。

Modal

Modal 是指在应用程序中打开一个模态对话框,用于显示一个临时信息或执行一个短期任务。Modal 对话框通常会阻塞用户对底层界面的操作,强制用户进行选择或完成任务。

在 Android 中,Modal 对话框通常使用 AlertDialog,它可以显示一个标题、正文和多个按钮,让用户选择想要采取的行动。AlertDialog 支持多个按钮,您可以指定正面按钮、负面按钮和中性按钮。当用户点击其中一个按钮时,AlertDialog 会响应并执行相应的动作。

以下是一个显示 AlertDialog 的示例代码:

val dialogBuilder = AlertDialog.Builder(this)

dialogBuilder.setTitle("这是一个标题")
    .setMessage("这是一条消息正文")
    .setPositiveButton("确定") {_, _ ->
        // 在这里放置点击确定后的操作
    }
    .setNegativeButton("取消") {_, _ ->
        // 在这里放置点击取消后的操作
    }

val dialog = dialogBuilder.create()
dialog.show()
Persistent Bottom Sheet

Persistent Bottom Sheet 是指一个位于屏幕底部的滑动面板,它可以一直显示在屏幕上,并允许用户与应用程序进行交互。

在 Android 中,Persistent Bottom Sheet 通常使用 CoordinatorLayout 和 BottomSheetBehavior 来实现。CoordinatorLayout 是一个高度定制化的布局容器,BottomSheetBehavior 则是一个可以让您更改 Bottom Sheet 的大小、位置和交互方式的控制器。

以下是一个显示 Persistent Bottom Sheet 的示例代码:

<android.support.design.widget.CoordinatorLayout
    ...>

    <LinearLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

        <!-- 在这里放置 Bottom Sheet 中的元素 -->

    </LinearLayout>

    <!-- 在这里放置底部工具栏 -->

</android.support.design.widget.CoordinatorLayout>
val bottomSheet = findViewById<LinearLayout>(R.id.bottom_sheet)
val bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)

bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
Modal 和 Persistent Bottom Sheet 的区别

Modal 和 Persistent Bottom Sheet 之间有几个显著的区别:

  1. Modal 对话框是一个模态对话框,可以阻止用户对应用程序底层界面的操作,而 Persistent Bottom Sheet 可以一直显示在屏幕底部,并且允许用户与应用程序进行交互。
  2. Modal 对话框通常用于显示临时信息或执行短期任务,而 Persistent Bottom Sheet 通常用于显示长期控件或允许用户执行应用程序层次结构中的多个任务。
  3. Modal 对话框通常使用 AlertDialog 来实现,而 Persistent Bottom Sheet 通常使用 CoordinatorLayout 和 BottomSheetBehavior 来实现。

总的来说,Modal 和 Persistent Bottom Sheet 都是非常有用的 UI 组件,您可以根据您的特定使用场景来选择哪种组件最适合您的需求。