扩展时更改 ModalDrawer 的大小,Jetpack Compose
Change the size of ModalDrawer when expanded, Jetpack Compose
我正在尝试在我的应用程序中实现一个抽屉,但它目前太大了。我会澄清我的意思,我知道其他问题,但他们似乎没有得到正确的答案,我的用例似乎有点不同。
这是帮助我实现这一目标的代码
@Composable
fun MainContent(component: Main) {
val drawerState = rememberDrawerState(DrawerValue.Closed)
val scope = rememberCoroutineScope()
val openDrawer = {
scope.launch {
drawerState.open()
}
}
Children(routerState = component.routerState, animation = crossfadeScale()) {
when (val child = it.instance) {
is Main.Child.Dashboard -> {
HomeView() { ModalDrawer(drawerState) { DashboardContent(child.component) { openDrawer() } } }
}
}
}
}
@Composable // This is a wrapper around current screen
fun HomeView( content: @Composable () -> Unit) {
Scaffold(modifier = Modifier.fillMaxSize()) {
content()
}
}
@Composable // Here is the actual drawer
fun ModalDrawer(drawerState: DrawerState, content: @Composable () -> Unit) {
ModalDrawer(
drawerState = drawerState,
drawerContent = {
Text("1234")
Text("12345")
},
content = {
content()
},
gesturesEnabled = drawerState.isOpen
)
}
您可以忽略子部分,它基本上只是检查当前处于活动状态的屏幕(现在它是唯一的仪表板,但当我将屏幕添加到混合中时,它也会显示其他屏幕,并与抽屉一起正常工作我不得不走这条路。)
这是一个多平台应用程序,所有编写代码都在 CommonMain 模块中。
不,这是根据 material 准则构建的,无法更改此大小
但是您可以获取此可组合项的源代码并创建您自己的模态抽屉。
这会花费您一些时间,请尝试从容器文件中复制所有代码,您将需要处理少量内部结构
我正在尝试在我的应用程序中实现一个抽屉,但它目前太大了。我会澄清我的意思,我知道其他问题,但他们似乎没有得到正确的答案,我的用例似乎有点不同。
这是帮助我实现这一目标的代码
@Composable
fun MainContent(component: Main) {
val drawerState = rememberDrawerState(DrawerValue.Closed)
val scope = rememberCoroutineScope()
val openDrawer = {
scope.launch {
drawerState.open()
}
}
Children(routerState = component.routerState, animation = crossfadeScale()) {
when (val child = it.instance) {
is Main.Child.Dashboard -> {
HomeView() { ModalDrawer(drawerState) { DashboardContent(child.component) { openDrawer() } } }
}
}
}
}
@Composable // This is a wrapper around current screen
fun HomeView( content: @Composable () -> Unit) {
Scaffold(modifier = Modifier.fillMaxSize()) {
content()
}
}
@Composable // Here is the actual drawer
fun ModalDrawer(drawerState: DrawerState, content: @Composable () -> Unit) {
ModalDrawer(
drawerState = drawerState,
drawerContent = {
Text("1234")
Text("12345")
},
content = {
content()
},
gesturesEnabled = drawerState.isOpen
)
}
您可以忽略子部分,它基本上只是检查当前处于活动状态的屏幕(现在它是唯一的仪表板,但当我将屏幕添加到混合中时,它也会显示其他屏幕,并与抽屉一起正常工作我不得不走这条路。)
这是一个多平台应用程序,所有编写代码都在 CommonMain 模块中。
不,这是根据 material 准则构建的,无法更改此大小
但是您可以获取此可组合项的源代码并创建您自己的模态抽屉。
这会花费您一些时间,请尝试从容器文件中复制所有代码,您将需要处理少量内部结构