Jetpack Compose - HorizontalPager 项目 spacing/padding 用于具有最大宽度的项目
Jetpack Compose - HorizontalPager item spacing/padding for items with max width
-
android
-
android-jetpack-compose
-
android-jetpack-compose-list
-
jetpack-compose-accompanist
-
android-jetpack-compose-pager
使用 Jetpack Compose 和 accompanist pager, I'm trying to create a HorizontalPager
其中:
- 显示当前项目左侧和右侧的项目边缘
Pager
项有最大宽度
举个例子,我写了下面的代码(为了简单起见,我制作了 Text
个项目,但实际上,我实际上制作了更复杂的 Card
个项目):
@Composable
fun MyText(modifier: Modifier) {
Text(
text = LOREM_IPSUM_TEXT,
modifier = modifier
.wrapContentHeight()
.border(BorderStroke(1.dp, Color.Red))
)
}
@ExperimentalPagerApi
@Composable
fun MyPager(pagerItem: @Composable () -> Unit = {}) {
Scaffold {
Column(
modifier = Modifier
.fillMaxSize()
// In case items in the VP are taller than the screen -> scrollable
.verticalScroll(rememberScrollState())
) {
HorizontalPager(
contentPadding = PaddingValues(32.dp),
itemSpacing = 16.dp,
count = 3,
) {
pagerItem()
}
}
}
}
@ExperimentalPagerApi
@Preview
@Composable
fun MyPager_200dpWidth() {
MyPager { MyText(modifier = Modifier.widthIn(max = 200.dp)) }
}
@ExperimentalPagerApi
@Preview
@Composable
fun MyPager_500dpWidth() {
MyPager { MyText(modifier = Modifier.widthIn(max = 500.dp)) }
}
@ExperimentalPagerApi
@Preview
@Composable
fun MyPager_FillMaxWidth() {
MyPager { MyText(modifier = Modifier.fillMaxWidth()) }
}
我遇到的问题是,当我使项目的最大宽度似乎小于屏幕宽度时(参见 MyPager_200dpWidth
),我再也看不到侧面的项目了.另一方面,使用具有 更大 最大宽度(参见 MyPager_500dpWidth
)或 fillMaxWidth
(参见 MyPager_FillMaxWidth
)的项目可以让我看到项目侧面。
在我看来,最大宽度 较小 的项目实际上占用的水平 space 比 较大 最大宽度。这可以在预览部分显示...
看到左边的图片 (MyPager_500dpWidth) and middle (
MyPager_FillMaxWidth) show the next item, while the image on the right (
MyPager_200dpWidth`) 是如何占据整个屏幕的吗?这是将鼠标悬停在项目上以查看骨架框时的另一个比较...
只是想知道是否有人可以帮助我弄清楚如何解决这个用例。 Compose 中是否可能存在错误?
页面大小由 HorizontalPager.contentPadding
参数控制。
将 widthIn(max = 200.dp)
应用于文本只会减小页面内元素的大小,而页面大小保持不变。
应用更多填充应该可以解决您的问题,例如,contentPadding = PaddingValues(100.dp)
看起来像这样:
android
android-jetpack-compose
android-jetpack-compose-list
jetpack-compose-accompanist
android-jetpack-compose-pager
使用 Jetpack Compose 和 accompanist pager, I'm trying to create a HorizontalPager
其中:
- 显示当前项目左侧和右侧的项目边缘
Pager
项有最大宽度
举个例子,我写了下面的代码(为了简单起见,我制作了 Text
个项目,但实际上,我实际上制作了更复杂的 Card
个项目):
@Composable
fun MyText(modifier: Modifier) {
Text(
text = LOREM_IPSUM_TEXT,
modifier = modifier
.wrapContentHeight()
.border(BorderStroke(1.dp, Color.Red))
)
}
@ExperimentalPagerApi
@Composable
fun MyPager(pagerItem: @Composable () -> Unit = {}) {
Scaffold {
Column(
modifier = Modifier
.fillMaxSize()
// In case items in the VP are taller than the screen -> scrollable
.verticalScroll(rememberScrollState())
) {
HorizontalPager(
contentPadding = PaddingValues(32.dp),
itemSpacing = 16.dp,
count = 3,
) {
pagerItem()
}
}
}
}
@ExperimentalPagerApi
@Preview
@Composable
fun MyPager_200dpWidth() {
MyPager { MyText(modifier = Modifier.widthIn(max = 200.dp)) }
}
@ExperimentalPagerApi
@Preview
@Composable
fun MyPager_500dpWidth() {
MyPager { MyText(modifier = Modifier.widthIn(max = 500.dp)) }
}
@ExperimentalPagerApi
@Preview
@Composable
fun MyPager_FillMaxWidth() {
MyPager { MyText(modifier = Modifier.fillMaxWidth()) }
}
我遇到的问题是,当我使项目的最大宽度似乎小于屏幕宽度时(参见 MyPager_200dpWidth
),我再也看不到侧面的项目了.另一方面,使用具有 更大 最大宽度(参见 MyPager_500dpWidth
)或 fillMaxWidth
(参见 MyPager_FillMaxWidth
)的项目可以让我看到项目侧面。
在我看来,最大宽度 较小 的项目实际上占用的水平 space 比 较大 最大宽度。这可以在预览部分显示...
看到左边的图片 (MyPager_500dpWidth) and middle (
MyPager_FillMaxWidth) show the next item, while the image on the right (
MyPager_200dpWidth`) 是如何占据整个屏幕的吗?这是将鼠标悬停在项目上以查看骨架框时的另一个比较...
只是想知道是否有人可以帮助我弄清楚如何解决这个用例。 Compose 中是否可能存在错误?
页面大小由 HorizontalPager.contentPadding
参数控制。
将 widthIn(max = 200.dp)
应用于文本只会减小页面内元素的大小,而页面大小保持不变。
应用更多填充应该可以解决您的问题,例如,contentPadding = PaddingValues(100.dp)
看起来像这样: