Hello, I have a question please. A click on the menu button does not indicate a reaction. Where is the error? The code is very simple, i can’t find it!
package at.hanami.ndcompose
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material.icons.filled.Search
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import at.hanami.ndcompose.ui.theme.NDComposeTheme
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
NDComposeTheme {
ScaffoldCompose()
}
}
}
}
@Composable
fun ScaffoldCompose() {
val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()
Scaffold(
topBar = { TopAppBarCompose(scaffoldState, scope) },
drawerContent = { DrawerCompose() },
drawerBackgroundColor = Color.DarkGray,
drawerContentColor = Color.White,
drawerShape = RoundedCornerShape(bottomEnd = 50.dp)
) { it.toString() }
}
@Composable
fun TopAppBarCompose(scaffoldState: ScaffoldState, scope: CoroutineScope) {
TopAppBar(
title = { Text(text = "Example") },
navigationIcon = {
IconButton(onClick = {
scope.launch { scaffoldState.drawerState.open() }
}) {
Icon(imageVector = Icons.Default.Menu, contentDescription = "Menu")
}
},
actions = {
IconButton(onClick = { /*TODO*/ }) {
Icon(imageVector = Icons.Default.Search, contentDescription = "Search")
}
},
backgroundColor = Color.DarkGray,
contentColor = Color.White
)
}
@Composable
fun DrawerCompose() {
Column() {
Row(modifier = Modifier.padding(20.dp)) {
Box(
modifier = Modifier
.fillMaxWidth()
.weight(10f)
.align(Alignment.CenterVertically)
)
Box(
modifier = Modifier
.fillMaxWidth()
.weight(1f)
.align(Alignment.CenterVertically)
) {
Icon(imageVector = Icons.Default.Close, contentDescription = "Close",
modifier = Modifier.clickable { }
)
}
}
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(text = "This is Drawer")
}
}
}
Thank you for your attention. Greetings Thomas