比方说,在我的 API 调用中有一个名为 color
的参数。是否有可能编辑或修改现有的 R.colors.color
从 API 结果分配颜色?
举个例子:
我调用我的 API,它返回 green
,现在我想加载我的应用程序,即(绿色 Toolbar
,绿色 TextView
颜色,等等) ,这可能吗?
我的第一个想法是:
在 colors.xml
上创建一个名为 demo
的条目,然后给它分配一个默认颜色,然后在任何我想要的地方使用这个 demo
颜色(Button
,TextView
,等等)。然后我想可以用 API 的结果通过编程方式改变这个值,这样我就不需要创建一个 SharedPreferences
或类似的东西来避免更多的代码。
就像 @ Y. S.对我说的
不幸的是,您将不得不设置文本的颜色或视图手动无处不在... : (
我希望如果有其他方法做到这一点,因为我不知道我的项目将包含多少 Activities
,所以如果有其他方法做到这一点,我很高兴听到其他猜测。
我正在尝试@Jared Rummler 的回答,也许我做错了什么... 我创建了一个简单的 Json
,我把我的资产,我解析 Json
,我把它放在 GlobalConstant
,然后我做了一个“简单的应用程序”。
首先,我有一个包含“ your _ special _ color”的 TextView
和一个包含“ your _ special _ color”的 Button
,然后我把它的返回值放在 GlobalConstant int
上如下:
case "your_special_color":
return GlobalConstant.color;
然后我尝试的是我的第一个 Activity
有1个 TextView
和1个 Button
,正如我之前所说,他们有颜色“你的 _ 特殊 _ 颜色”,我不想改变它,但我有一个 Intent
在我的 Button
打开另一个 Activity
,包含相同的,但与 GlobalConstant.color
,它没有改变。
我试着这样做(我的第二个活动) :
public class Main2Activity extends AppCompatActivity {
private Res res;
@Override public Resources getResources() {
if (res == null) {
res = new Res(super.getResources());
}
return res;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
我错过什么了吗?
哦. . 我想通了,我猜是在我的 MainActivity2
上做这个?
Button btn = (Button)findViewById(R.id.button2);
btn.setBackgroundColor(res.getColor(R.color.your_special_color));