我在 colors.xml 文件中制作了一系列带颜色的项目:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<array name="rectangle_colors">
<item>
<color>#77aa3535</color>
</item>
<item>
<color>#44cc1818</color>
</item>
<item>
<color>#ff1068</color>
</item>
<item>
<color>#6090cc</color>
</item>
<item>
<color>#6040aa</color>
</item>
</array>
</resources>
我想在Java和其他XML文件中访问这些颜色。我发现了很多关于如何使用Java访问它们的帮助,但是除了文档here之外,我没有在XML中访问它们。我无法弄清楚如何使用他们提供的模式:
@[package:]array.array_name
我试过了:
android:background="@[com.example.jason.miniproject].array.rectangle_colors[0]"
但它不起作用。
除了在我开始输入正确位置时弹出的自动完成功能之外,我有没有办法浏览Android Studio中的所有XML资源值?
另外,我是否会采取这种错误方式?我有一堆视图,我希望这些视图以不同的背景颜色开始。我想从XML文件中获取这些颜色。然后,当用户与应用程序交互时,我想在Java中更改这些颜色。新颜色将是初始颜色的变化,因此我想要在Java中迭代初始颜色。我存储这些颜色的方法是个好主意吗?
答案 0 :(得分:0)
以XML格式访问此数组并不起作用。您可以像在colors.xml中那样存储它们,但是您可以动态访问颜色,例如,在onCreate()方法中。
在这个例子中,我访问Array的第一种颜色,并用这种颜色设置LinearLayout背景:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
LinearLayout layout = (LinearLayout) findViewById(R.id.teste);
Resources resources = getResources();
int color[] = resources.getIntArray(R.array.rectangle_colors);
layout.setBackgroundColor(resources.getColor(color[0]));
}
我阅读了您发布的文档,但它并没有说明如何从数组中访问所需的项目。
实际上它是一样的:
@[package]:array/array_name
使用
@array/array_name
如果您提到的套餐是您自己的
答案 1 :(得分:0)
可能的解决方法
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="rectangle_colors1">#77aa3535</color>
<color name="rectangle_colors2">#44cc1818</color>
<color name="rectangle_colors3">#ff1068</color>
....
<array name="rectangle_colors">
<item>
<color>@color/rectangle_colors1</color>
</item>
<item>
<color@color/rectangle_colors2</color>
</item>
<item>
<color>@color/rectangle_colors3</color>
</item>
.....
</array>
</resources>
有关详细信息,请参阅Referencing a string in a string array resource with xml