当我如下设置修饰符时
class MainActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Clock(modifier = Modifier
.aspectRatio(1f)
.fillMaxSize()
.padding(16.dp))
}
}
}
根据我看到其他人的代码,我同时拥有 fillMaxSize()
和 aspectRaio(1f)
并且两者都设置了。他们在做同样的事情吗?还是出于不同的目的需要它们? (我尝试删除其中一个,结果似乎相同)。
P/S:我试图查看代码以了解不同之处,但无法按照 How to see JetpackCompose kotlin source in Android Studio (4.2)?
最佳答案
看起来 aspectRatio(1f)
会使其成为正方形,而 fillMaxSize()
会使其占据整个屏幕。
以下任一示例
setContent {
Clock(modifier = Modifier
.fillMaxSize()
.aspectRatio(1.0f)
.padding(64.dp))
}
或
setContent {
Clock(modifier = Modifier
.fillMaxSize()
.padding(64.dp))
}
fillMaxSize()
优先,drawRect
如下
但是当我们有 aspectRation(1.0f)
时,有以下任一示例,
setContent {
Clock(modifier = Modifier
.aspectRatio(1.0f)
.fillMaxSize()
.padding(64.dp))
}
或
setContent {
Clock(modifier = Modifier
.aspectRatio(1.0f)
.padding(64.dp))
}
应该是
关于android - JetpackCompose Modifier 属性的 aspectRatio(1f) 和 fillMaxSize() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314422/