android 强制Composable占用尽可能多的高度

mbzjlibv  于 2023-05-27  发布在  Android
关注(0)|答案(3)|浏览(139)

bounty将在6天内到期。回答此问题可获得+200声望奖励。NoKey正在寻找典型答案

如果可能的话,没有复杂的计算。奇怪的是,GoogleMap没有考虑到其他Composables。
我有一个@Composable的乐趣,呈现以下视图:

这是代码(虽然没有底部导航,但这并不重要)。代码也可以在这个复制项目中找到(只需添加您的API密钥)https://github.com/Jasperav/GoogleMapsBug

@Composable
fun ShowGoogleMap() {
    Scaffold {
        Column {
            GoogleMap()
            Text("hi")
            Text("hi")
            Text("hi")
            Text("hi")
        }
    }
}

问题是GoogleMap占用了整个高度,它没有为Text s留下任何空间。
如何确保GoogleMap与其他可组合对象共享高度?我希望看到Map与其他Text堆叠。

d6kp6zgx

d6kp6zgx1#

@Composable
fun ShowGoogleMap() {
    Scaffold {
        Column(Modifier.weight(1f)) {
            GoogleMap(Modifier.weight(1f))
            Text("hi")
            Text("hi")
            Text("hi")
            Text("hi")
        }
    }
}

Column Modifier.weight(1f),表示它将占用所有可用空间。然后,使用Modifier.weight(1f)为GoogleMap组合对象赋予权重1。这可确保它与其他“文本”可组合项共享相同的高度。如果不想平均分配空间,则增加GoogleMap的Modifier的权重值

b1zrtrql

b1zrtrql2#

这样如何

Column(Modifier.fillMaxSize()) {
            Box(Modifier.weight(1f)) {
                GoogleMap(Modifier.fillMaxSize())
            }
            Text("hi")
            Text("hi")
            Text("hi")
            Text("hi")
        }
2izufjch

2izufjch3#

您可以将Box作为父小部件添加到列中以使用Modifier.weight(1f)

@Composable
fun ShowGoogleMap() {
    Scaffold {
        Box(modifier = Modifier.weight(1f)) {
            Column {
                GoogleMap()
                Text("hi")
                Text("hi")
                Text("hi")
                Text("hi")
            }
        }
    }
}

相关问题