从片段更改应用程序的背景颜色

时间:2013-11-20 18:13:27

标签: android android-fragments

我目前正在使用一种架构,其中我有多个片段,我在相同的活动中交换 我需要能够为这些片段中的一个使用不同的背景颜色但是我不想使用添加一层透支的懒惰解决方案。
为了清楚起见:我有一个由我的主题设置的窗口背景,并在其上面我绘制卡片&名单。在我的一个片段中,我需要略微不同的窗口背景颜色 有没有办法做到这一点?我已经尝试过使用ContextThemeWrapper但它似乎没有用(可能是因为背景已经被绘制了?)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

刚刚找到它:

可以通过调用

来实现
    ColorDrawable cd = new ColorDrawable(getActivity().getResources().getColor(
                R.color.your_color));

    getActivity().getWindow().setBackgroundDrawable(cd);

在片段初始化期间,当它附加到活动时。

答案 1 :(得分:-1)

不幸的是,不支持在运行时更改片段的背景。要获得此功能,您可以将片段包装在RelativeLayout或类似的内容中,并以编程方式设置背景。

<RelativeLayout
        android:id="@+id/fragmentContainer1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#ccc">
    <fragment android:name="whatever.fragment.name"
            android:id="@+id/frag_1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
</RelativeLayout>

然后在你的代码中通过id fragmentContainer1获取并在其上执行view.setBackgroundColor(YourColorVariable)

另一种方法可能是获取您的片段,找到根视图,然后在其上设置背景。 fragment.getRootView().setBackgroundColor(Color.WHITE)这取决于你的片段的布局,所以它可能有效也可能无效。