android - 在 Jetpack compose 中添加抽屉切换按钮

标签 android navigation-drawer android-jetpack-compose

我想将汉堡图标添加到 Appbar 并使用该图标打开/关闭抽屉。

我将如何实现这一目标?

Scaffold(
    drawerShape = RoundedCornerShape(topRight = 10.dp, bottomRight = 10.dp),
    drawerElevation = 5.dp,
    drawerContent = {
      // Drawer
    },
    topBar = {
      TopAppBar(
        navigationIcon = {
          Icon(
            Icons.Default.Menu,
            modifier = Modifier.clickable(onClick = {
              // Open drawer => How?
            })
          )
        },

        modifier = Modifier
          .fillMaxWidth()
          .clip(RoundedCornerShape(bottomLeft = 10.dp, bottomRight = 10.dp)),
        title = { Text(text = "Hello") }
      )
    },
  ) {}

最佳答案

使用 rememberScaffoldState() 修改抽屉状态。

  • 创建一个变量:
  • val state = rememberScaffoldState()
    val scope = rememberCoroutineScope() // in 1.0.0-beta `open()` and `close` are suspend functions
    
  • 将状态传递给 Scaffold
  • Scaffold(
       scaffoldState = state,
       // ...
    )
    
  • 使用state.drawerState.open()state.drawerState.close()onClick打开/关闭抽屉。
  • navigationIcon 创建一个图标在 TopAppBar :
  • val state = rememberScaffoldState()
    Scaffold(
      scaffoldState = state,
      topBar = {
        TopAppBar(
          title = { Text(text = "AppBar") },
          navigationIcon = {
            Icon(
              Icons.Default.Menu,
              modifier = Modifier.clickable(onClick = {
                scope.launch { if(it.isClosed) it.open() else it.close() }
              })
            )
          }
        )
      },
      drawerShape = RoundedCornerShape(topRight = 10.dp, bottomRight = 10.dp),
      drawerContent = {
        Text(text = "Drawer")
      }
    ) {
       // Scaffold body
    }
    

    关于android - 在 Jetpack compose 中添加抽屉切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63738585/

    相关文章:

    android - 抽屉导航 ListView 不刷新列表项

    android - Android Automotive 支持 Jetpack Compose 吗?

    android - 如何在PagerSlidingTabStrip中将标签切换到指定位置

    dart - 抽屉导航不适用于屏幕内的屏幕

    java - 将变量从 ViewPager 传递到 Clicklistener

    c# - Xamarin Android 警报管理器问题

    android - 来自 R.drawable 的 +imageResource 在 Jetpack Compose 中导致 IllegalArgumentException

    android - 如何提升多个状态?

    android - 自定义 (NFC) NDEF 格式

    java - 使用 Theme.Light.NoTitleBar 显示 Light AlertDialog