Declaring a Box like this results in a compilation error
Box(modifier = Modifier
.fillMaxWidth()
.align(Alignment.Center)) {
Text(text = "Hello")
}
import for align looks like this
import androidx.compose.foundation.layout.BoxScopeInstance.align
Error
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
CodePudding user response:
align is supposed to be called from within the content of the Box
Box(
modifier = Modifier.fillMaxWidth()
) {
Text(
modifier = Modifier.align(Alignment.Center),
text = "foobar"
)
}
alternatively use contentAlignment
Box(
modifier = Modifier.fillMaxWidth(),
contentAlignment = Alignment.Center
) {
Text(
text = "foobar"
)
}
CodePudding user response:
The modifier.align() method can only be used in the Box, Column, Row layout scope.
For example, something like this.
Column(modifier = Modifier.fillMaxWidth()) {
Text("Hello")
Text("World", modifier = Modifier.align(Alignment.CenterHorizontally))
Row(Modifier.align(Alignment.End)) {
Icon(....)
}
}
Using align in Column can only set Alignment whose property is Alignment.Horizontal, such as CenterHorizontally, Start, End.
Using align in Row can only set Alignment whose property is Alignment.Vertical such as CenterVertically Top, Bottom.
Use align in Box to set Alignment other than Alignment.Vertical and Alignment.Horizontal, such as TopStart, TopCenter, TopEnd, Center, BottomStart, BottomCenter, BottomEnd.
