android: присвоение постоянного значения элементу xml - PullRequest
13 голосов
/ 13 декабря 2011

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

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

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

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

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

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

android:max="Constants.VAL"

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

спасибо

Ответы [ 3 ]

20 голосов
/ 09 июня 2013

Нет, вы не можете. Постоянные значения в классах доступны только во время выполнения, а файлы 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"/>
2 голосов
/ 07 мая 2017

Это возможно при использовании Привязка данных .

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

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)).
0 голосов
/ 13 декабря 2011

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

...