首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android:将常量值赋给xml元素

android:将常量值赋给xml元素
EN

Stack Overflow用户
提问于 2011-12-14 00:11:46
回答 3查看 9K关注 0票数 21

我目前正在编写一个android应用程序。在这里,我被xml-layout所困扰。是否可以使用类中定义的变量(常量)为xml标记赋值?

我的所有程序常量都有一个名为Constants.java的类。我这样做是为了更好的维护性。现在,我想使用其中一个常量,例如,下面定义的VAL作为ui微件的值。

代码语言:javascript
复制
public class Constants {
public static final int VAL = 10;
...
}

在我的例子中,小部件是一个进度条(水平样式),我想定义"android:max“值。通常,人们可以这样写:

代码语言:javascript
复制
android:max="10"
android:max="@Integer/val

但我想使用Constants类中定义的值,如下所示:

代码语言:javascript
复制
android:max="Constants.VAL"

有什么解决方案吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-09 05:51:48

不,不能。类中的常量值只在运行时可用,并且XML文件是在运行前编译和生成的。

下一个最好的做法是声明要在res/values/integers.xml中使用的XML常量。下面是一个示例integers.xml文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max">10</integer>
</resources>

要在XML中使用此值,请执行以下操作:

代码语言:javascript
复制
<YourComponent
    android:yourattr="@integer/max"/>
票数 27
EN

Stack Overflow用户

发布于 2017-05-07 15:33:17

使用Data Binding是可能的。

这个类应该看起来像这样:

代码语言:javascript
复制
class Constants extends BaseObservable {

    private static final int MY_INT = 10;

    @Bindable
    public int getMyInt() {
        return MY_INT;
    }
}

xml如下所示:

代码语言:javascript
复制
<layout
    ...
    >
    <data>
        <variable
            name="constants"
            type="your.package.Constants" />
    </data>

...

<YourComponent
    android:max='@{constamts.myInt}'

...

</layout>

别忘了将绑定本身设置为(binding.setConstants(constants)).

票数 7
EN

Stack Overflow用户

发布于 2011-12-14 00:35:51

你的问题不是很清楚,你想怎么做?如果您想使用常量值,那么只需使用常量创建ui-widgets并忽略xml即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8492355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档