android compose Drawer抽屉 使用

android compose Drawer抽屉 使用

复制代码
/**
 * Author : wn
 * Email : maoning20080809@163.com
 * Date : 2026/1/4 20:54
 * Description : 抽屉Drawer
 */
class DrawerActivity : ComponentActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            testDrawer()
        }
    }

    @OptIn(ExperimentalMaterial3Api::class)
    @Preview
    @Composable
    private fun testDrawer(){
        val myDrawerState = rememberDrawerState(DrawerValue.Closed)
        val scope = rememberCoroutineScope()


        ModalNavigationDrawer(
            drawerState = myDrawerState,
            gesturesEnabled = true,
            drawerContent = {
                ModalDrawerSheet(modifier = Modifier.width(300.dp)) {
                    //抽屉头部
                    Spacer(modifier = Modifier.height(12.dp))

                    NavigationDrawerItem(
                        icon = { Icon(Icons.Default.AccountCircle,null) },
                        label = {Text(text = "用户名称")},
                        selected = false,
                        onClick = {}
                    )
                    
                    Spacer(modifier = Modifier.height(8.dp))

                    //分割线
                    Divider()

                    //导航项
                    NavigationDrawerItem(
                        icon = {Icon(Icons.Default.Home, null)},
                        label = {Text(text = "首页")},
                        selected = true,
                        onClick = {
                            scope.launch { myDrawerState.close() }
                        }
                    )

                    NavigationDrawerItem(
                        icon = {Icon(Icons.Default.Person, null)},
                        label = {Text(text = "个人资料")},
                        selected = false,
                        onClick = {
                            scope.launch { myDrawerState.close() }
                        }
                    )

                    NavigationDrawerItem(
                        icon = {Icon(Icons.Default.Settings, null)},
                        label = {Text(text = "设置")},
                        selected = false,
                        onClick = {
                            scope.launch { myDrawerState.close() }
                        }
                    )
                }
            }
        ) {
            Scaffold(
                topBar = {
                    TopAppBar(title = {Text(text = "我的应用")},
                        navigationIcon = {
                            IconButton(
                                onClick = {
                                    scope.launch { myDrawerState.open() }
                                }
                            ) {
                                Icon(Icons.Default.Menu, "打开抽屉")
                            }
                        }
                    )
                }
            ) {  paddingValues ->
                Box(
                    modifier = Modifier.fillMaxSize().padding(paddingValues),
                    contentAlignment = Alignment.Center
                ){
                    Text(text = "主内容区域")
                }

            }
        }
    }
}
相关推荐
AIsoft_868915 小时前
手机视频转文字工具清单:哪些APP支持录屏识别
android·音视频
_祝你今天愉快18 小时前
Paint Cavans高级绘制:[一]Paint画笔高级应用
android
@zulnger19 小时前
安卓进行稳定性测试
android·appium·1024程序员节
不吃凉粉19 小时前
android 副屏连接
android
OxYGC21 小时前
手机为什么能“自动跳过“开屏广告?李跳跳、GKD 与 iOS 代理软件原理盘点
android·ios·开屏广告·广告屏蔽
Android-Flutter1 天前
Compose 管理状态 详解
android·compose
缓慢更新1 天前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
我怀里的猫1 天前
android-activity-launch-sequence
android
YB13751 天前
Jetpack Compose 动画rememberInfiniteTransition
android
baidu_247438611 天前
Android 自定义竖直的虚线
android