我只想第一次动态更改布局的背景颜色,使用 android 中的配置文件,该文件应该在 assets 文件夹中,它可以是 xml 文件或任何东西。请帮我。
问问题
324 次
2 回答
0
如果您为布局设置 ID,如下所示:
<LinearLayout android:id="@+id/myLayout">
<LinearLayout/>
然后你可以像这样在 onCreate 中设置你的背景:
myLayout= findViewById(R.id.myLayout);
myLayout.setBackgroundColor(Color.BLUE);
于 2013-05-14T05:08:07.970 回答
0
1.使用颜色作为int值。在资产文件 config.txt 中,您可以像这样为 int 值输入颜色。例如这个值是 Color.RED
4294901760
2.在您的应用程序中使用此代码
String config = "config.txt";
InputStream is = null;
try {
is = getAssets().open(config);
DataInputStream dis = new DataInputStream(is);
String color = dis.readUTF();
ColorDrawable drawable = new ColorDrawable(Integer.parseInt(color));
//use drawable
//for example
new TextView(this).setBackgroundColor(Integer.parseInt(color));
new TextView(this).setBackgroundDrawable(drawable);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(is != null)
{
try {
is.close();
} catch (IOException e) {
}
}
}
3.可以使用反射,但是在配置文件中,从values/colors.xml中写入颜色名称。
String config = "config.txt";
InputStream is = null;
try {
is = getAssets().open(config);
DataInputStream dis = new DataInputStream(is);
String color = dis.readUTF();
try {
Field field = R.color.class.getDeclaredField(color);
field.setAccessible(true);
Integer id = (Integer) field.get(null);
ColorDrawable drawable = new ColorDrawable(getResources().getColor(id));
// use drawable
// for example
new TextView(this).setBackgroundColor(getResources().getColor(id));
new TextView(this).setBackgroundDrawable(drawable);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
}
}
于 2013-05-14T07:04:43.317 回答