package
com.geeksforgeeks.jcbottomsheet
import
android.os.Bundle
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.background
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
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.tooling.preview.Preview
import
androidx.compose.ui.unit.dp
import
androidx.compose.ui.unit.sp
import
kotlinx.coroutines.launch
class
MainActivity : ComponentActivity() {
@ExperimentalMaterialApi
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
MainContent()
}
}
}
@ExperimentalMaterialApi
@Composable
fun MainContent() {
Scaffold(
topBar = { TopAppBar(title = { Text(
"GFG | Bottom Sheet"
, color = Color.White) }, backgroundColor = Color(
0xff0f9d58
)) },
content = { MyContent() }
)
}
@ExperimentalMaterialApi
@Composable
fun MyContent(){
val bottomSheetScaffoldState = rememberBottomSheetScaffoldState(bottomSheetState =
BottomSheetState(BottomSheetValue.Collapsed))
val coroutineScope = rememberCoroutineScope()
BottomSheetScaffold(
scaffoldState = bottomSheetScaffoldState,
sheetContent = {
Box(Modifier.fillMaxWidth().height(
200
.dp).background(Color(
0XFF0F9D58
))) {
Column(Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally) {
Text(text =
"Hello Geek!"
, fontSize =
20
.sp, color = Color.White)
}
}
},
sheetPeekHeight =
0
.dp
){}
Column(
Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally) {
Button(onClick = {
coroutineScope.launch {
if
(bottomSheetScaffoldState.bottomSheetState.isCollapsed){
bottomSheetScaffoldState.bottomSheetState.expand()
}
else
{
bottomSheetScaffoldState.bottomSheetState.collapse()
}
}
}, colors = ButtonDefaults.buttonColors(backgroundColor = Color(
0XFF0F9D58
))) {
Text(text =
"Click Me"
, color = Color.White)
}
}
}
@ExperimentalMaterialApi
@Preview
(showBackground =
true
)
@Composable
fun DefaultPreview() {
MainContent()
}