JetpackCompose Modifier属性的aspectRatio(1f)和fillMaxSize()之间有什么区别

时间:2020-10-12 08:41:53

标签: android android-jetpack-compose

当我将修改器设置如下时

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)?

1 个答案:

答案 0 :(得分:0)

aspectRatio(1f)会使它变成正方形,而fillMaxSize()会使它占据整个屏幕。

以下任一示例

        setContent {
            Clock(modifier = Modifier
                .fillMaxSize()
                .aspectRatio(1.0f)
                .padding(64.dp))
        }

        setContent {
            Clock(modifier = Modifier
                .fillMaxSize()
                .padding(64.dp))
        }

fillMaxSize()优先的地方,drawRect如下所示

enter image description here

但是当我们有aspectRation(1.0f)时,下面给出一个例子,

        setContent {
            Clock(modifier = Modifier
                .aspectRatio(1.0f)
                .fillMaxSize()
                .padding(64.dp))
        }

        setContent {
            Clock(modifier = Modifier
                .aspectRatio(1.0f)
                .padding(64.dp))
        }

应该是

enter image description here