如何使用android中的配置文件更改布局的背景颜色

时间:2013-05-14 05:02:56

标签: java android

我想第一次动态更改布局的背景颜色,使用android中的配置文件该文件应该在assets文件夹中,它可以是xml文件或任何东西。 请帮帮我。

2 个答案:

答案 0 :(得分:0)

如果您为布局设置ID,如下所示:

<LinearLayout android:id="@+id/myLayout">
<LinearLayout/>

然后您可以在onCreate中设置backGround,如下所示:

myLayout= findViewById(R.id.myLayout);
myLayout.setBackgroundColor(Color.BLUE);

答案 1 :(得分:0)

1.使用int值的颜色。 在资产文件config.txt中,您可以像这样输入int值的颜色。例如,此值为Color.RED

4294901760

2.在您的appliaction中使用此代码

        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) {
            }
        }
    }
}