我目前正在编写一个android应用程序。在这里,我被xml-layout所困扰。是否可以使用类中定义的变量(常量)为xml标记赋值?
我的所有程序常量都有一个名为Constants.java的类。我这样做是为了更好的维护性。现在,我想使用其中一个常量,例如,下面定义的VAL作为ui微件的值。
public class Constants {
public static final int VAL = 10;
...
}在我的例子中,小部件是一个进度条(水平样式),我想定义"android:max“值。通常,人们可以这样写:
android:max="10"
android:max="@Integer/val但我想使用Constants类中定义的值,如下所示:
android:max="Constants.VAL"有什么解决方案吗?
谢谢
发布于 2013-06-09 05:51:48
不,不能。类中的常量值只在运行时可用,并且XML文件是在运行前编译和生成的。
下一个最好的做法是声明要在res/values/integers.xml中使用的XML常量。下面是一个示例integers.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="max">10</integer>
</resources>要在XML中使用此值,请执行以下操作:
<YourComponent
android:yourattr="@integer/max"/>发布于 2017-05-07 15:33:17
使用Data Binding是可能的。
这个类应该看起来像这样:
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)).
发布于 2011-12-14 00:35:51
你的问题不是很清楚,你想怎么做?如果您想使用常量值,那么只需使用常量创建ui-widgets并忽略xml即可。
https://stackoverflow.com/questions/8492355
复制相似问题