android - 将框/列与屏幕底部对齐 Jetpack Compose

标签 android kotlin user-interface android-jetpack-compose android-jetpack-compose-layout

我基本上希望卡片固定在顶部,一组按钮固定在底部(在屏幕键盘上)

像这样使用带有修饰符的 Column 只会导致按钮覆盖顶部卡片:

fun HomeScreen() {
Column(
    modifier = Modifier
        .fillMaxWidth(),
    verticalArrangement = Arrangement.SpaceAround
) {
    WordGrid()
  }
Column(
    modifier = Modifier
        .fillMaxWidth(),
        verticalArrangement = Arrangement.Bottom
    ) {
        Keyboard()
       }

我已经尝试过使用所有不同的 Arrangements,使用一行和使用 Boxes,但似乎无法让它工作。

奇怪的是,在@Preview 中,上面的代码看起来好像有效,但在模拟器上运行时,它们都在屏幕顶部。

使用垫片是另一种选择,但这会导致其他方面的问题吗?可能与屏幕尺寸等有关?

最佳答案

如果您希望按钮行固定在底部,您必须将 Column 设置为 weight1f,像这样

MyTheme {
    Surface(color = MyTheme.colors.background) {
        // Cards content
        Column(
            modifier = Modifier.fillMaxWidth()
        ) {
            Column(
                modifier = Modifier.fillMaxWidth().weight(1f)
            ) {
                Card(
                    modifier = Modifier.fillMaxWidth().height(80.dp).padding(all = 16.dp),
                    backgroundColor = Color.Red,
                ) {
                    Text(text = "Card 1")
                }
                Card(
                    modifier = Modifier.fillMaxWidth().height(80.dp).padding(all = 16.dp),
                    backgroundColor = Color.Green,
                ) {
                    Text(text = "Card 2")
                }
                Card(
                    modifier = Modifier.fillMaxWidth().height(80.dp).padding(all = 16.dp),
                    backgroundColor = Color.Blue,
                ) {
                    Text(text = "Card 3")
                }
            }
            // Buttons content
            Row(
                modifier = Modifier.fillMaxWidth()
            ) {
                Button(
                    onClick = {},
                    modifier = Modifier.padding(horizontal = 8.dp)
                ) {
                    Text(text = "Button 1")
                }
                Button(
                    onClick = {},
                    modifier = Modifier.padding(horizontal = 8.dp)
                ) {
                    Text(text = "Button 3")
                }
                Button(
                    onClick = {},
                    modifier = Modifier.padding(horizontal = 8.dp)
                ) {
                    Text(text = "Button 2")
                }
            }
        }
    }
}

关于android - 将框/列与屏幕底部对齐 Jetpack Compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71668187/

相关文章:

java - 在 Android 蓝牙打印机中以泰米尔语打印

junit - NotAMockException/如何在 Kotlin 的参数化测试中 stub 值?

java - 有没有办法在 Ubuntu 下改进 JFileChooser 的外观?

android - 此版本的 Android Studio 无法打开此项目,请使用 Android Studio 4.0 或更新版本重试

用于 ACCESS_MOCK_LOCATIONS 的 Android Studio 调试特定的 AndroidManifest.xml

android - 如何从 Adapter 返回回调到 Fragment 类

kotlin - 在 Kotlin 中创建抽象类的实例

android - 错误 : onActivityResult overrides nothing

android - 从代码更改 Activity 背景

python - pyqt:内存使用