Android: назначение константного значения xml-элементу

В настоящее время я программирую приложение для Android. Там я застрял в xml-макете. Можно ли присвоить значение xml-тегу с использованием переменной (константы), определенной в классе?

У меня есть класс под названием Constants.java для всех моих программных констант. Я делаю это для лучшей ремонтопригодности. Теперь я хотел бы использовать одну из этих констант, например VAL, как определено ниже, как значение для ui-widged.

public class Constants { public static final int VAL = 10; ... } 

В моем случае виджет – это индикатор прогресса (горизонтальный стиль), и я бы хотел определить значение «android: max». Обычно можно написать:

 android:max="10" android:max="@Integer/val 

Но я хотел бы использовать значение, определенное в моем классе Constants, например:

 android:max="Constants.VAL" 

Есть ли решение для этого?

благодаря

Solutions Collecting From Web of "Android: назначение константного значения xml-элементу"

Нет, ты не можешь. Константные значения в классах доступны только во время выполнения, а файлы XML скомпилируются и генерируются до выполнения.

Следующее, что нужно сделать, это объявить константы XML, которые вы хотите использовать в res/values/integers.xml . Вот пример файла integers.xml :

 <?xml version="1.0" encoding="utf-8"?> <resources> <integer name="max">10</integer> </resources> 

Для использования этого значения в вашем XML, сделайте следующее:

 <YourComponent android:yourattr="@integer/max"/> 

Ваш вопрос не очень ясен, что вы хотите с этим сделать? Если вы хотите использовать постоянное значение, просто создайте ui-widgets с константами и просто игнорируйте xml.

Возможно использование привязки данных .

Класс должен выглядеть примерно так:

 class Constants extends BaseObservable { private static final int MY_INT = 10; @Bindable public int getMyInt() { return MY_INT; } } 

И xml:

 <layout ... > <data> <variable name="constants" type="your.package.Constants" /> </data> ... <YourComponent android:max='@{constamts.myInt}' ... </layout> 
  • Не забудьте установить сам привязку ( binding.setConstants(constants) ).