我使用newView和bindView创建了listfragment的元素。列表构造得很好。列表的每一行都有一个分隔符。
我猜这些分隔符之间的颜色是默认的android主题。我尝试使用onCreateView()中的代码将此颜色设置为白色。
getListView().setBackgroundColor(Color.WHITE);
但它抱怨内容视图尚未创建。
答案 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"