根据屏幕尺寸指定ConstraintLayout的constraintDimensionRatio

Specify ConstraintLayout's constraintDimensionRatio based on screen size

我有一个布局,其中的图像需要根据屏幕尺寸以不同的纵横比显示。

我试过这样做

app:layout_constraintDimensionRatio="@dimen/image_ratio"

然后在各种 dimens.xml 文件中针对适当的屏幕尺寸指定不同的比例。

<dimen name="image_ratio">3:1</dimen>

我在布局编辑器中完全按照我想要的方式工作,但它无法编译。

Android resource compilation failed
Output: [...]/values-sw600dp-v13.xml:11: error: invalid dimen.

不确定为什么它说错误在第 11 行,因为有问题的维度实际上在第 58 行

我认为看起来应该可以工作并且在编辑器中工作的东西在编译时却不起作用,这很愚蠢。

那么我应该如何达到这个结果呢?

layout_constraintDimensionRatio 属性需要 字符串属性 作为与布局尺寸的比率(即 1:1)或具有高度或宽度的上下文(即 W,1:2 或 H, 1:2).

dimens.xml 需要声明应用所需的尺寸,因此您需要将您的特定属性添加到 strings.xml.

感谢 Jeel Vankede,我解决了这个问题。 他提出的提供 strings.xml 比率的解决方案可行,但会为所有不同的屏幕尺寸生成一组额外的 strings.xml 文件。

这是不必要的,因为您可以将字符串存储在现有的 dimens.xml 文件中。

我只是将 <dimen> 标签换成了 <string> 标签,然后在我的布局文件中使用了 @string/image_ratio