Android:为listfragment设置背景颜色

时间:2014-01-03 11:58:43

标签: android android-fragments android-listfragment

我使用newView和bindView创建了listfragment的元素。列表构造得很好。列表的每一行都有一个分隔符。

enter image description here

我猜这些分隔符之间的颜色是默认的android主题。我尝试使用onCreateView()中的代码将此颜色设置为白色。

getListView().setBackgroundColor(Color.WHITE);

但它抱怨内容视图尚未创建。

2 个答案:

答案 0 :(得分:17)

片段在调用onCreateView(之前不会有内容视图... 因此getListView() onCreateView()会返回null并将onCreateView()中的代码移至onViewCreated() ...

通常您不需要覆盖onCrateView()中的ListFragment方法,因为它会覆盖您并将ListView实例化为其内容

以下代码假设您正在扩展ListFragment ...

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ListView listView = getListView();
        listView.setDivider(new ColorDrawable(Color.WHITE));
        listView.setDividerHeight(3); // 3 pixels height
    }

答案 1 :(得分:1)

使用样式。类似于 res / values / styles.xml

<!-- ListViews -->
<style name="ListViews" parent="@android:style/Widget.ListView">
    <item name="android:cacheColorHint">#0000</item>
    <item name="android:divider">@drawable/list_divider</item>
    <!--
        Despite the warning about using pixels, this is actually the correct
        way do the trick. Otherwise, the divider would be scaled.
    -->
    <item name="android:dividerHeight">1px</item>
</style>

拥有 res / drawable / list_divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <solid android:color="#fff" />
</shape>

如果您在布局中扩展Fragment,请在ListView定义中扩展:

style="@style/ListViews"