我的分数是3,Column
.其中1st-Column
的成分是2nd和3rd-Column
.在2nd-Column
中,它里面有很多组件.在最后的3rd,Column
,我有几个项目,我停留在屏幕的底部.我在这answer美元的帮助下做到了这一点.在较小的屏幕项目是落后的,所以我的主管提到,所有的项目将自动滚动到2nd Column
,明显高于3rd Column
.
@Composable
fun Xyz(){
Theme {
Column(
modifier = Modifier
.padding(dimensionResource(R.dimen.margin_screen_edge_sides))
.fillMaxSize()
.verticalScroll(rememberScrollState()),
// verticalArrangement = Arrangement.Top
or
// verticalArrangement = Arrangement.Arrangement.SpaceBetween
) {
Column(
modifier = Modifier
.verticalScroll(rememberScrollState())
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {
// so many item in here.
// If here items is behind of 3rd column then automatically scroll the item when user land of this this screen
}
Column {
Button()
// may be more item in here
}
}
}
}
Actual Output个
Expected Output个
Scenario 1个
注意:-项目将在
2nd Column
增加,即我在AnimatedVisibility
中添加了逻辑,所以当重组时,它将添加项目.
Scenario 2个
当3rdColumn后面没有任何物品时,我的屏幕将不会滚动任何内容
如果你有问题,请问我.非常感谢
UPDATE个
@Composable
fun Xyz(){
Theme {
val scrollState = rememberScrollState()
LaunchedEffect(
keyOneIsTrue,
keyTwoIsTrue
) {
val newValue = scrollState.maxValue
scrollState.animateScrollTo(newValue)
}
Column(
modifier = Modifier
.padding(dimensionResource(R.dimen.margin_screen_edge_sides))
.fillMaxSize()
.verticalScroll(rememberScrollState()),
// verticalArrangement = Arrangement.Top
or
// verticalArrangement = Arrangement.Arrangement.SpaceBetween
) {
Column(
modifier = Modifier
.verticalScroll(scrollState)
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {
// so many item in here.
// If here items is behind of 3rd column then automatically scroll the item when user land of this this screen
}
Column {
Button()
// may be more item in here
}
}
}
}
我有这么多的keys
,但我在我的LaunchedEffect
中给你举的例子很少.当为keyOneIsTrue
时,它进入LaunchedEffect
,然后newValue
总是返回0
值.在keyTwoIsTrue
中也发生了同样的情况,什么都不会滚动:
Note当任何键更改时,意味着我正在通过
AnimatedVisibility
更改2ndColumn
中项目的可见性
UPDATE 2个
我正在添加实时示例,这是自动滚动不工作时,项目被添加到列表中.
@Preview(showBackground = true, widthDp = 250, heightDp = 320)
@Composable
fun Xyz() {
Theme {
var itemClicked by remember { mutableStateOf(0) }
val favourites = remember { mutableStateListOf<String>() }
val scrollState = rememberScrollState()
LaunchedEffect(favourites.size > 0) {
scrollState.animateScrollTo(scrollState.maxValue)
}
Column(
modifier = Modifier
.padding(dimensionResource(R.dimen.margin_screen_edge_sides))
.fillMaxSize()
.verticalScroll(rememberScrollState()),
) {
Column(
modifier = Modifier
.verticalScroll(scrollState)
.weight(1f),
horizontalAlignment = Alignment.CenterHorizontally,
) {
favourites.forEach { text ->
Text(
text = text,
fontSize = 30.sp,
color = Red
)
}
}
Column {
Button(onClick = {
itemClicked++
favourites.add("item clicked $itemClicked")
}) {
Text(text = "Add me")
}
}
}
}
}
你可以在video中清楚地看到,当在列表中添加项目时,自动滚动不起作用.只有当用户手动操作时才会滚动.