以编程方式更改资源(int / strings / styles / etc)的值

时间:2015-04-19 12:29:51

标签: android

我正在尝试更改资源的价值,但很多帖子说你不能改变,我想如果你能,但不知道怎么做。

在Xml中我有这样的东西:

   <resources xmlns:android="http://schemas.android.com/apk/res/android">
        <integer name="textSize">11</integer>
    </resources>

获取值

int update_str = this.getResources().getInteger (R.integer.textSize);

但改变它?

???

我可以获取所有文本视图并单独更改参数,但如果我们在每个页面上有1000个文本视图,我认为它对%cpu硬件有点强迫和激烈。

3 个答案:

答案 0 :(得分:2)

这不受支持,而不是您应该处理更改TextViews的值的方式。资源在您的APK中是最终的,如果您想更改TextViews中的文字,您可以定义所需的所有资源并将其传递给代码中的TextView,并按照您所描述的getResources()检索它们。 1}}。

答案 1 :(得分:0)

该值在应用程序源文件中是硬编码的,因此在运行时期间绝对无法更改。

如果您希望在运行时更改该值,则应将该值保存在SharedPreferences中,并在每次需要时从该处获取(尽管这意味着您无法在XML中使用它,只能在Java中使用它) )

答案 2 :(得分:0)

  

但许多帖子说你无法改变

这是因为你不能! xml值在apk中是最终的设计。

  

如果我们在每个页面上有1000个文本视图,我认为它有点被迫   急剧来到%cpu硬件

我认为在任何页面上都有1000 TextView不是一个好主意。但即使你必须这样做,除了改变String的最终价值之外,还有许多程序方法可以实现这一目标。

例如,您可以与所有文本视图共享单个对象引用,此对象将具有字符串的NON最终实例,您将可以放弃操作。阅读MVC以了解这个想法。