Укажите ConstraintLayout's RestrictDimensionRatio в зависимости от размера экрана. - PullRequest
0 голосов
/ 16 октября 2018

У меня есть макет с изображением, которое необходимо отображать с разным соотношением сторон в зависимости от размера экрана.

Я попытался сделать это следующим образом

app:layout_constraintDimensionRatio="@dimen/image_ratio"

И затем указать различные соотношения в различных файлах измеренияs.xml для соответствующего размера экрана.

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

ИУ меня все работает точно так, как я хочу, в редакторе макетов, но он не компилируется.

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

Не уверен, почему он говорит, что ошибка в строке 11, так как проблемное измерение на самом деле в строке58

Я думаю, глупо, что что-то, что, похоже, должно работать и работает в редакторе, не работает, когда приходит время компиляции.

Так как мне добиться этого?результат?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Благодаря Джилу Ванкеде я решил это.Предложенное им решение предоставить соотношение из strings.xml будет работать, но сгенерирует дополнительный набор файлов strings.xml для всех размеров экрана.

Это не нужно, поскольку вы можете хранить строки в существующемФайл измерения.xml.

Я просто отключил теги <dimen> для тегов <string>, а затем использовал @string/image_ratio вместо этого в своем файле макета.

0 голосов
/ 16 октября 2018

layout_constraintDimensionRatio атрибут требует строковый атрибут как отношение к размеру макета (т.е. 1: 1) или с учетом контекста высоты или ширины (например, W, 1: 2 или H, 1: 2).

dimensions.xml требует, чтобы приложения объявляли размеры, требуемые приложением, поэтому вам нужно добавить свой конкретный атрибут в strings.xml .

...