一个活动中的不同背景

时间:2013-12-01 14:26:08

标签: android android-actionbar

在Android中,正确是否可以为视图,空白区域和操作栏设置不同的背景颜色?

例如,我在PreferenceFragment中有一个PreferenceScreen。我有这些代码:

样式XML:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="MyTheme" parent="android:Theme.Holo">
        <item name="android:textColor">@color/blue1</item>
        <item name="android:background">@color/bg</item>
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:titleTextStyle">@style/MyActionBar</item>
    </style>
    <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar.Solid">
        <item name="android:background">@color/brown1</item>
        <item name="android:windowBackground">@color/brown1</item>
    </style>
</resources>

我的PreferenceFragment类:这看起来像个黑客!

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
View v=super.onCreateView(inflater, container, savedInstanceState);
    ((ListView) v.findViewById(android.R.id.list)).setBackgroundColor(getResources().getColor(R.color.blue1));
    return v;
}

这已经使ListView项目具有bg背景颜色,以及它们之后的空白blue1背景颜色(请注意,我必须以相反的方式设置它们才能使其工作!),ActionBar有brown1背景,但它上面的文字没有,那真是太丑了!另外,windowBackground到底做了什么?

enter image description here

编辑:我已经能够通过这个黑客改变标题的背景:

int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if (actionBarTitleId > 0) {
    TextView title = (TextView) findViewById(actionBarTitleId);
    if (title != null)
        title.setBackgroundColor(getResources().getColor(R.color.brown1));
}

现在我该如何为徽标和徽标左侧的“向上”箭头执行此操作?

1 个答案:

答案 0 :(得分:0)

解决方案是从样式XML中删除titleTextStyle