Android Jetpack Compose之ModalBottomSheet的使用

news2024/12/23 7:27:28

Android Jetpack Compose是一个现代化的UI工具包,让开发者以声明式的方式来构建Android应用。今天我们要讨论的是其中一个重要组件——ModalBottomSheet


1. ModalBottomSheet简介

ModalBottomSheet是Jetpack Compose中的一个组件,它允许我们从屏幕底部弹出一个可交互的面板。它通常用于提供额外的内容或者功能,而且是一种更优的方式来展示内容,而不是使用全屏的对话框。

2. 如何使用ModalBottomSheet

首先,我们需要创建一个ModalBottomSheetLayout,然后在这个布局中放置我们的内容。最后,我们可以使用showModalBottomSheet函数来显示底部模态面板。下面是一个简单的例子:

@OptIn(ExperimentalMaterialApi::class)
@Preview
@Composable
fun ModalBottomSheetDemo(){
    val modalBottomSheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden)
    val coroutineScope =rememberCoroutineScope()

    ModalBottomSheetLayout(
        sheetState =modalBottomSheetState,
        sheetContent = {
            Text(text="Hello from ModalBottomSheet",
            modifier = Modifier.padding(16.dp),
                style = MaterialTheme.typography.h6
            )
            Button(onClick = {coroutineScope.launch { modalBottomSheetState.hide() }},
            modifier = Modifier
                .fillMaxWidth()
                .padding(horizontal = 16.dp, vertical = 8.dp)){
                Text(text = "Hide sheet")
            }
        }
    ){
        Button( 
            onClick = { coroutineScope.launch { modalBottomSheetState.show() }},
            modifier = Modifier
                .fillMaxWidth()
                .padding(16.dp)
        ){
            Text(text = "Show sheet")
        }
    }


}

 

 

在上述代码中,我们首先创建了一个modalBottomSheetState,它是ModalBottomSheetValue.Hidden的初始值。然后,我们创建了一个ModalBottomSheetLayout,并放置了一个Text和一个Button在面板上。当点击这个按钮时,ModalBottomSheet会被隐藏。最后,我们在布局中添加了一个按钮,当点击这个按钮时,ModalBottomSheet会被显示。

三. 自定义ModalBottomSheet

ModalBottomSheet组件提供了许多参数,让开发者可以根据需要进行自定义。例如,你可以自定义sheetElevationsheetShapesheetBackgroundColor等属性。

@OptIn(ExperimentalMaterialApi::class)
@Preview
@Composable
fun CustomModalBottomSheetDemo(){
    val modalBottomSheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden )
    val coroutineScope =rememberCoroutineScope()

    ModalBottomSheetLayout(sheetState = modalBottomSheetState, sheetShape = RoundedCornerShape(topStart =10.dp, topEnd = 10.dp),
    sheetElevation = 16.dp,
    sheetBackgroundColor = Color.Green,
    sheetContent = {
        Text(text = "Hello from ModalBottomSheet",
        modifier = Modifier.padding(16.dp),
        style = MaterialTheme.typography.h6)
        Button(onClick = {coroutineScope.launch { modalBottomSheetState.hide() }},
        modifier = Modifier
            .fillMaxWidth()
            .padding(16.dp)){
            Text(text = "Hide sheet")
        }
    }) {
        Button(onClick = { coroutineScope.launch{modalBottomSheetState.show()}},
            modifier = Modifier
                .fillMaxWidth()
                .padding(horizontal = 16.dp, vertical = 8.dp)
        ){
            Text(text = "Show sheet")
        }
    }
}

总的来说,ModalBottomSheet是Jetpack Compose中的一个非常有用的组件。通过掌握它的使用方法,你可以在你的Android应用中创建出更好的用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hugging News #0626: 音频课程更新、在线体验 baichuan-7B 模型、ChatGLM2-6B 重磅发布

每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」,本期 Hugging News 有哪些有趣的消息…

第27章 uView 内置路由使用注意事项

1 uView 内置路由不支持通过“localhost”域名直接获取数据。 在前后分离开发中“axios” 路由支持使用“localhost”域名或IP地址获取后端的数据,所以不管是IIS部署还是后端调试通过“axios” 路由都能获取数据,对于.NetCore的前后端分离开发来说“axio…

【proxychains4】虚拟机内kali走主机代理

文章目录 简介安装配置使用测试 简介 ProxyChains是Linux和其他Unix下的代理工具。 它可以使任何程序通过代理上网, 允许TCP和DNS通过代理隧道, 支持HTTP、 SOCKS4和SOCKS5类型的代理服务器, 并且可配置多个代理。 ProxyChains通过一个用户定…

数据结构--单链表的定义

数据结构–单链表的定义 本节的学习目标: 单链表的定义(如何用代码实现) 优点:不要求大片连续空间,改变容量方便 缺点:不可随机存取,要耗费一定空间存放指针 代码实现 struct LNode {ElemType data; //数据域stru…

vcruntime140.dll,丢失如何修复,vcruntime140.dll,丢失修复详细办法(有效的方法)

今天打开photoshop软件的时候,突然间就打不开,电脑报错由于找不到vcruntime140.dll,无法继续执行此代码,然后我就把photoshop卸载了,再重新安装,依然还是报错。这个可怎么办?vcruntime140.dll如…

C++【day1】

练习 定义一个命名空间Myspace&#xff0c;包含以下函数&#xff1a;将一个字符串中的所有单词进行反转&#xff0c;并输出反转后的结果。 #include <iostream> #include<iomanip>using namespace std;namespace Myspace { void reversal(string *str); }void My…

CW32L083不同主频功耗测试

本文主要介绍CWL083VCT6芯片在不同主频下的功耗测试方法和测试结果。 1.HSIOSC时钟 HSIOSC 时钟由内部 RC 振荡器产生&#xff0c;不需要外部电路&#xff0c;比 HSE 时钟的成本低&#xff0c;启动速度快。HSIOSC 时钟频率固定为 48MHz&#xff0c;频率精度低于 HSE 时钟。RC …

《计算机系统与网络安全》 第二章 计算机网络基础与TCPIP协议安全性

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

苹果app用发布证书打包后怎么装手机测试

一、背景 iOS 的开发证书打包后可以通过爱思助手安装到手机上测试&#xff0c;但发布 (Production) 证书是不允许安装在手机上的。而在实际开发过程中&#xff0c;尽管通过开发证书测试过了&#xff0c;iOS生产包仍然可能会出现一些问题&#xff0c;需对生产包也进行测试。 而…

【Stable diffusion教程】AutoDL云部署超详细步骤说明【外婆都会】

1 AutoDL云端部署操作流程 1.1 登录/注册 官网&#xff1a;https://www.autodl.com/home&#xff0c;点击右上角登录/注册。此处我已经注册了 如果你是学生的话&#xff0c;注册完之后&#xff0c;进入控制台&#xff0c;在右上角点一下学生认证&#xff0c;然后你就可以享受…

23.6.24

1、grep&#xff1a;查找字符串 grep 字符串 文件名 -w:按单词查找 -R:实现递归查找&#xff0c;主要用于路径是目录的情况 -i:不区分大小写 -n:显示行号 grep -w "^ubuntu" /etc/passwd ---->查找以ubuntu单词作为开头位置的所在行 grep -w "ubuntu$"…

html简单实现b站评论回车发布

头像&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…

Linux系统:进程概念

文章目录 1 操作系统1.1 概念1.2设计操作系统的目的 2进程2.1 进程是什么2.2 如何管理进程2.2查看进程2.3 程序中获取自己的pid2.4 创建一个进程2.5 进程状态2.6 进程优先级2.6.1为什么要有优先级2.6.2 什么是优先级2.6.3 linux下优先级的做法 2.8 其他概念 3进程地址空间3.1 初…

基于Docker环境下的Jenkins搭建及使用

目录 前言&#xff1a; Docker下安装Jenkins 启动Jenkins Jenkins插件下载 配置Jenkins 修改Jenkins时间 配置Python3环境 配置HTML报告/Allure报告 Allure报告配置 简单使用-实例构建 参数化构建 构建后操作 配置成功 控制台输出 Allure报告查看 HTML报告查看 前言&#xff1a…

macOS上下载安装Kibana并连接ES

下载Kibana 执行以下命令进行&#xff0c;版本号根据你所用的ES版本选择&#xff0c;比如我的是7.10.0 curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-darwin-x86_64.tar.gz解压安装Kibana tar -zxvf kibana-7.10.0-darwin-x86_64.tar.gz进行config…

Visual modflow Flex地下水数值模拟

专题一 地下水数值软件的操作流程、建模步骤和所需资料处理及相关注意事项 [1] Visual MODFLOW Flex特征 [2] Visual MODFLOW Flex软件界面及模块 [3] 地下水数值模拟的建模步骤及数据需求 专题二 模型建模操作方法 技巧、真实案例演练、特殊问题处理 [1] 直接模型建模的操…

【信号】信号处理与进程通信:快速上手

目录 0. 信号概述 1. 产生信号的方式&#xff1a; 1.1 当用户按某些终端键时&#xff0c;将产生信号。 1.2 硬件异常将产生信号。 1.3 软件异常将产生信号。 1.4 调用kill函数将发送信号。 1.5 运行kill命令将发送信号。 2. 信号的默认&#xff08;缺省&#xff09;处理…

用for循环----输出0-999的水仙数

输出0-999的水仙数 水仙算法&#xff1a;一个数它各位的立方和&#xff0c; 例如&#xff1a;1531*1*15*5*53*3*3 提示&#xff1a;for循环&#xff0c;求余数(%)取整&#xff08;/&#xff09;运算符。 答案&#xff1a; 代码如下&#xff1a; #include <stdio.h> …

物理备份xtrabackup

物理备份xtrabackup Xtrabackup 是一个开源的免费的热备工具&#xff0c;在 Xtrabackup 包中主要有 Xtrabackup 和innobackupex 两个工具。其中Xtrabackup 只能备份 InnoDB 和 XtraDB 两种引擎; innobackupex则是封装了Xtrabackup&#xff0c;同时增加了备份MyISAM引擎的功能。…

STM32开发——智能小车(循迹、避障、测速)

目录 1.循迹小车 1.1CubeMX配置 1.2函数代码 2.避障小车 3.小车测速 1.循迹小车 需求&#xff1a;用左右轮实现PWM调速、红外传感器获取道路信息改变方向。 左边红外D0——PB12 右边红外D0——PB13 1.1CubeMX配置 1.2函数代码 motor.c代码 #include "gpio.h"…