像这样声明Box
会导致编译错误
Box(modifier = Modifier
.fillMaxWidth()
.align(Alignment.Center)) {
Text(text = "Hello")
}
import foralign
如下所示
import androidx.compose.foundation.layout.BoxScopeInstance.align
误差
Cannot access 'BoxScopeInstance': it is internal in 'androidx.compose.foundation.layout'
Compose Version =1.1.1
Kotlin Version =1.6.10
Android Studio Version =Android Studio Electric Eel | 2022.1.1 Canary 2
align
应该从Box
的内容中调用
Box(
modifier = Modifier.fillMaxWidth()
) {
Text(
modifier = Modifier.align(Alignment.Center),
text = "foobar"
)
}
或者使用contentAlignment
Box(
modifier = Modifier.fillMaxWidth(),
contentAlignment = Alignment.Center
) {
Text(
text = "foobar"
)
}
modifier.align()方法只能在Box
、Column
、Row
布局范围内使用。
例如:
Column(modifier = Modifier.fillMaxWidth()) {
Text("Hello")
Text("World", modifier = Modifier.align(Alignment.CenterHorizontally))
Row(Modifier.align(Alignment.End)) {
Icon(....)
}
}
在Column
中使用align只能设置属性为Alignment.Horizontal
的align,如centerhorizontal, Start, End。
在Row
中使用align只能设置其属性为Alignment.Vertical
的对齐方式,如centervertical Top, Bottom。
在Box
中使用align来设置对齐方式而不是对齐方式。垂直和对齐。水平,如TopStart, TopCenter, TopEnd, Center, BottomStart, BottomCenter, BottomEnd