Загрузить значение из dimens.xml и сделать его отрицательным

В XML-документе есть ли способ загрузить значение из dimens.xml и сделать его отрицательным? Например, если у меня есть:

<dimen name="x">20dp</dimen>

Можно ли сделать что-то вроде этого:

android:layout_marginRight="[email protected]/x"

Итак, я фактически получаю:

android:layout_marginRight="-20dp"

Ответ 1

Это невозможно в стандартном формате XML. Вы можете получить значение измерения в Java, умножить его на -1 и применить его в Java.

Вы даже можете сделать это в виде пользовательского атрибута (например, yourapp:layout_negativeMarginRight) в своем собственном подклассе ViewGroup, если вы действительно этого хотели. Это, казалось бы, было бы излишним.


UPDATE: теперь это возможно с помощью выражения привязки данных:

android:padding="@{0.75f * @dimen/icon}"

Он не работает для полей или любых других атрибутов макета из-за отсутствия адаптеров привязки, которые вы можете реализовать. См. эту ошибку.