撰写 Appbar 重叠 activity 内容

Compose Appbar overlaps activity content

我还在学习 compose.in 我正在构建这个原型,我的列包含卡片视图,在这种情况下是 1 个虚拟卡片,与应用栏重叠。我也试过用脚手架,结果一样

这是卡片代码:

@Composable
fun DiaryCard(){
val bs = "filler text,strings,anything "+
        "jadsjjadj adsnjasjd d saasd" +" sadsad asdasd adsasda" +
        "sasdasdas dsa d"



   Column {
   
   Spacer(modifier = Modifier.padding(top = 6.dp))
   Card(modifier = Modifier
       .fillMaxWidth()
       .padding(13.dp),
       shape = MaterialTheme.shapes.small,
       elevation = 5.dp, backgroundColor = Color.White){


       Row(modifier = Modifier.padding(bottom = 2.dp)){

           Text(text = "29 Sept. 2019", modifier = Modifier
               .fillMaxWidth(0.75F)
               .padding(start = 1.5.dp),color = Color.Black)



       }
       Divider()
       Spacer(modifier = Modifier.padding(bottom = 3.dp,top = 2.dp))
       Column(modifier = Modifier.fillMaxWidth()) {
           Text(text = "today was a good day",color = Color.Black)
           Spacer(modifier = Modifier.padding(bottom = 3.dp))
           Text(text = bs, color = Color.Black)
       }

       }
   }
}

应用栏:

    @Composable
     fun topAppbar(){
       TopAppBar(backgroundColor = Color.DarkGray) {

      }
     }

您可以:

  • 添加 ScaffoldtopBar = { topAppbar() }
  • 添加一个Column()来包裹Card的所有内容

类似于:

Scaffold(topBar = { topAppbar() },
) {
    DiaryCard()
}

与:

@Composable
fun DiaryCard(){

    val bs = "filler text,strings,anything "+
            "jadsjjadj adsnjasjd d saasd" +" sadsad asdasd adsasda" +
            "sasdasdas dsa d"

    Column {

        Spacer(modifier = Modifier.padding(top = 6.dp))
        Card(
            modifier = Modifier
                .fillMaxWidth()
                //.background(Color.Red)
                .padding(13.dp),
            shape = MaterialTheme.shapes.small,
            elevation = 5.dp, backgroundColor = Color.White
        ) {
            Column() { //It is important to avoid overlap inside the Card

                Row(modifier = Modifier.padding(bottom = 2.dp)) {

                    Text(
                        text = "29 Sept. 2019", modifier = Modifier
                            .fillMaxWidth(0.75F)
                            .padding(start = 1.5.dp), color = Color.Black
                    )


                }
                Divider()
                Spacer(modifier = Modifier.padding(bottom = 3.dp, top = 2.dp))
                Column(modifier = Modifier.fillMaxWidth()) {
                    Text(text = "today was a good day", color = Color.Black)
                    Spacer(modifier = Modifier.padding(bottom = 3.dp))
                    Text(text = bs, color = Color.Black)
                }

            }
        }
    }
}

和:

@Composable
fun topAppbar(){

    TopAppBar(backgroundColor = Color.DarkGray) {
        Text("AppBar")
    }
}

可以使用innerPadding,

 Scaffold(
    topBar = {
        TopAppBar(
            title = {
                Text(
                    ...
                )
            },
            navigationIcon = {
                IconButton(onClick = { }) {
                    Icon(imageVector = Icons.Default.Menu, contentDescription = "Menu Icon" )
                }
            },
            backgroundColor = colorResource(id = R.color.purple_200),
            contentColor = Color.White,
            elevation = 12.dp
        )
    },

){
    innerPadding ->
    Box(modifier = Modifier.padding(innerPadding)){
        DiaryCard()
    }
}