android 编写:如何正确地为(惰性)列添加足够的底部填充,以避免FAB覆盖其内容?

wlzqhblo  于 2023-06-28  发布在  Android
关注(0)|答案(2)|浏览(75)

这个问题与Flutter的discussed here非常相似,但在使用Jetpack Compose的原生Android中发生:
有没有一种方法可以动态地向(惰性)列添加底部填充,这样它的内容就不会被FAB掩盖?
FAB被添加到脚手架中,所以我希望有一些方法可以动态地获得这个填充。

lpwwtiir

lpwwtiir1#

你可以试试这个,虽然这可能不是一个好的解决方案,

@Composable
fun MyScreen() {
    
    var fabHeight by remember {
        mutableStateOf(0)
    }

    val heightInDp = with(LocalDensity.current) { fabHeight.toDp() }

    Scaffold(
        floatingActionButton = {
            FloatingActionButton(
                modifier = Modifier.onGloballyPositioned {
                    fabHeight = it.size.height
                },
                shape = CircleShape,
                onClick = {},
            ) {
                Icon(imageVector = Icons.Filled.Add, contentDescription = "icon")
            }
        },
        floatingActionButtonPosition = FabPosition.End
    ) {
        LazyColumn(
            modifier = Modifier
                .fillMaxSize()
                .padding(it),
            contentPadding = PaddingValues(bottom = heightInDp + 16.dp)
        ) {
            items(100) {
                Text(text = " Hello world Hello world Hello world Hello world  Hello world")
            }
        }
    }
}

编辑:只需将修改后的填充添加到contentPadding of LazyColumn
添加硬编码的16.dp是因为内部Scaffold实现具有从底部偏移fab的私有属性。

所有这些都会产生这样的结果:

wkyowqbh

wkyowqbh2#

只需在LazyColumn中添加以下代码。

contentPadding = PaddingValues(bottom = 16.dp) // put value as per you requirement

相关问题