垂直滚动影响喷气背包组合中的修改器重量

Viv*_*odi 9 android kotlin android-jetpack android-jetpack-compose

我希望我的按钮位于屏幕底部,使用Column. 当我尝试使用较小的设备时,我的内容不可滚动。所以我在堆栈溢出中搜索并找到了这个答案。当我添加时

.verticalScroll(rememberScrollState())
Run Code Online (Sandbox Code Playgroud)

在我的修改器中,它打破了间隔重量的东西并将我的按钮放在顶部。

输入

@可组合

fun Input() {
    Column(
        modifier = Modifier
            .fillMaxSize()
            .verticalScroll(rememberScrollState())
            .padding(10.dp)
    ) {
        Item()
    }
}
Run Code Online (Sandbox Code Playgroud)

物品

@Composable
fun Item {
    Image()
    Text() // more item here
    Pressure()
}
Run Code Online (Sandbox Code Playgroud)

压力

@Composable
fun Pressure() {
      var value by rememberSaveable(stateSaver = TextFieldValue.Saver) {
         mutableStateOf(TextFieldValue())
      }
    Column {
        Text(value)
        Image()
        // more item here
        Spacer(modifier = Modifier.weight(1f))
        OnSubmit(value)
    }
}
Run Code Online (Sandbox Code Playgroud)

实际产量

在此输入图像描述

预期输出

在此输入图像描述

我希望我的按钮在较小的设备中位于底部并垂直滚动。

更新

@SemicolonSpace 之后,我尝试了代码,但我的按钮位于屏幕后面

fun Input() {
        Column(
            modifier = Modifier.fillMaxHeight(),
            verticalArrangement = Arrangement.SpaceBetween
        ){
          Column(
              modifier = Modifier
                  .verticalScroll(rememberScrollState())
                  .padding(10.dp)
          ) {
              Item()
          }
          // behind from screen
          OnSubmit()
       }
    }
Run Code Online (Sandbox Code Playgroud)

你可以看到我的按钮在屏幕后面,我无法滚动

在此输入图像描述

Thr*_*ian 4

我不知道你具体是在哪里遇到这个问题。我制作了一个与图像中结构相似的样本,如果我没有遗漏任何东西,它看起来效果很好。

@Composable
private fun MyComposable() {
    Column(
        modifier = Modifier
            .fillMaxSize()
            .verticalScroll(rememberScrollState())
            .padding(10.dp)
    ) {
        var text by remember { mutableStateOf("") }
        Row(
            modifier = Modifier.fillMaxSize(),
            horizontalArrangement = Arrangement.SpaceEvenly,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text("Left")
            TextField(value = text, onValueChange = { text = it })
            Text("Right")

        }

        Spacer(modifier=Modifier.height(20.dp))
        Row(
            modifier = Modifier.fillMaxSize(),
            horizontalArrangement = Arrangement.SpaceEvenly,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text("Left")
            TextField(value = text, onValueChange = { text = it })
            Text("Right")

        }

        Spacer(modifier=Modifier.height(20.dp))
        Row(
            modifier = Modifier.fillMaxSize(),
            horizontalArrangement = Arrangement.SpaceEvenly,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text("Left")
            TextField(value = text, onValueChange = { text = it })
            Text("Right")
        }

        Spacer(modifier=Modifier.height(20.dp))
        Row(
            modifier = Modifier.fillMaxSize(),
            horizontalArrangement = Arrangement.SpaceEvenly,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text("Left")
            TextField(value = text, onValueChange = { text = it })
            Text("Right")

        }

        Spacer(modifier=Modifier.height(20.dp))
        Row(
            modifier = Modifier.fillMaxSize(),
            horizontalArrangement = Arrangement.SpaceEvenly,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text("Left")
            TextField(value = text, onValueChange = { text = it })
            Text("Right")

        }

        Spacer(modifier = Modifier.weight(1f))
        Button(modifier = Modifier
            .padding(10.dp)
            .fillMaxWidth(),
            colors = ButtonDefaults.buttonColors(
                backgroundColor = Color(0xff4DD0E1),
                contentColor = Color.White
            )
            , onClick = { /*TODO*/ }) {
            Text("Submit", modifier = Modifier.padding(vertical = 20.dp))
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述