Jetpack Compose ClipToPadding

Jetpack Compose ClipToPadding

我知道我可以像这样向小部件添加填充

LazyColumn(
   modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 10.dp),
   content = {
        items(items.size) { index ->
            EmergencyContactComposeItem(emergencyContact = items[index])
        }
    }
)

但是我如何产生与“clipToPadding=false”相同的结果

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:clipToPadding="false"
    android:paddingBottom="25dp">

视图/小部件在哪里不会裁剪填充,但仍强制执行边界?

尝试如下填充内容:

LazyColumn(
    contentPadding = PaddingValues(bottom=10.dp),
){

    items(items.size) { index ->
        EmergencyContactComposeItem(emergencyContact = items[index])
    }
}

LazyColumn 需要 contentPadding 来实现 clipToPadding。您可以通过三种方式使用它。

第一个: 如果您想在所有方向添加相同的内容填充,请使用:

LazyColumn(
   contentPadding = PaddingValues(all = 16.dp)
) {
    items(items.size) { index ->
        EmergencyContactComposeItem(emergencyContact = items[index])
    }
}

第二个: 如果你想在水平(开始和结束)或垂直(顶部和底部)添加相同的内容填充,那么使用:

LazyColumn(
   contentPadding = PaddingValues(horizontal = 16.dp, vertical = 10.dp)
) {
    items(items.size) { index ->
        EmergencyContactComposeItem(emergencyContact = items[index])
    }
}

第三个一: 如果你想在所有方向添加不同的内容填充或者如果你想在某些方向添加然后使用:

LazyColumn(
   contentPadding = PaddingValues(start = 5.dp, top = 10.dp, end = 8.dp, bottom = 6.dp)
) {
    items(items.size) { index ->
        EmergencyContactComposeItem(emergencyContact = items[index])
    }
}