各位老哥们我刚刚学Android。
代码:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
GreetingCardTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
GreetingImage(stringResource(R.string.lao_a), stringResource(R.string.lao_b))
}
}
}
}
}
@Composable
fun GreetingText(message: String, from : String, modifier: Modifier = Modifier) {
Column(
modifier = modifier
) {
Text(
text = message,
fontSize = 50.sp,
lineHeight = 55.sp,
// 文本在自身宽度内居中
textAlign = TextAlign.Center
)
Text(
text = from,
fontSize = 50.sp,
modifier = Modifier
.padding(4.dp)
// 在父容器中右对齐(水平方向终点)
.align(alignment = Alignment.CenterHorizontally)
.background(color = Color.Red)
)
}
}
@Composable
fun GreetingImage(message : String, from: String, modifier: Modifier = Modifier) {
val image = painterResource(R.drawable.shui)
Box(modifier = Modifier.background(color = Color.Yellow)) {
Image(
painter = image,
contentDescription = null,
// contentScale = ContentScale.Crop,
alpha = 0.5f,
modifier = Modifier.background(color = Color.Red)
)
GreetingText(
message,
from,
Modifier.background(color = Color.Blue)
)
}
}
运行结果:

问题
为什么GreetingImage方法里的box组件大小是铺满屏幕的(黄色区域)?我并没有设置大小,如果说组件默认铺满父容器,那为什么box里的GreetingText(蓝色区域)只是包裹住了里面的文字内容?(有ai说box默认匹配父容器大小,Column默认包裹子容器,可我把box改为column,黄色还是占满屏幕)请老哥们解答一下疑惑