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

#android #xml

#Android #xml

Вопрос:

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

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

Возможно ли сделать что-то подобное:

 android:layout_marginRight="-@dimen/x"
  

Так что я де-факто получаю:

 android:layout_marginRight="-20dp"
  

Ответ №1:

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

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


ОБНОВЛЕНИЕ: теперь это в некоторой степени возможно с помощью выражений привязки данных:

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

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