Compose 中有沒有辦法在不使用的情況下將可組合項與居中的專案對齊ConstraintLayout?
我想實作這一目標:

我可以用一個Spacer和Weights這樣

Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
Spacer(Modifier.weight(1f))
Button(...)
Label(Modifier.weight(1f),...)
}
問題是我Label有條件地顯示,如果我用權重隱藏兩個元素,按鈕會輕微移動。
也不確定使用權重是否比ConstraintLayout首先產生更多的性能影響。
uj5u.com熱心網友回復:
這Modifier.weight是創建這種布局的正確方法。我不確定性能是否優于ConstraintLayout,但肯定不會更差。
如果您遇到性能問題,您應該在 google 問題跟蹤器上創建一個問題,因為 Compose 應該是這樣使用的。就個人而言,我沒有遇到任何與 相關的性能問題weight,但該技術相當新,因此不能完全排除這種可能性。
在你的情況下,你需要在任何給定的時間有一些代表,你可以申請Modifier.weight。您可以使用if-else和添加Spacer的else情況下,但我更喜歡使用Box可選的內容:它看起來更清潔,并會在正常的情況下作業,你添加影片。
默認Box contentAlignment為Alignment.TopStart,它將完全按照您的情況作業,但在其他一些情況下,您可以覆寫它或在Spacers內部添加更多內容。
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
Spacer(Modifier.weight(1f))
Button(...)
Box(Modifier.weight(1f)) {
if (condition) {
Label(...)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/366785.html
