我以为我成功地创建了一个带条纹的Android ListView,其中列表项的背景颜色交替。当我使用Theme.Holo.Light作为应用程序的主题时,它非常有效(,在Manifest中。)然而,当我为我的应用程序定义了一个自定义主题,使用自定义背景色时,条纹消失了,取而代之的是我的主题中定义的单一背景色为什么我的自定义主题的背景颜色不能被getView()中的setBackgroundColor()覆盖?如何解决此问题谢谢!
更新:我已经意识到应用程序背景是在我的视图背景前面呈现的!(此外,在我布局中的ProgressBar前面,完全遮挡了它。)如果我将@color/background_color设置为完全透明,条纹就会显示出来。那么,问题是,为什么我的主题的背景渲染在某些视图/背景之前
主题:
<style name="Basic">
<item name="android:textColor">#000000</item>
<item name="android:background">@color/background_color</item>
</style>
getView():
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout itemView;
Resources res = getResources();
int[] colors = new int[] {res.getColor(R.color.list_stripe_1),res.getColor(R.color.list_stripe_2)};
if (convertView == null){
itemView = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater viewInflater;
viewInflater = (LayoutInflater)getContext().getSystemService(inflater);
viewInflater.inflate(resource, itemView, true);
} else {
itemView = (LinearLayout) convertView;
}
////Omitting code for populating TextViews..
itemView.setBackgroundColor(colors[position%colors.length]);
return itemView;
}
不要在主题中使用设置android:background,而是设置android:windowBackground。我还没有完全调查为什么不能用setBackgroundColor()覆盖主题集背景,或者为什么使用android:background导致微调器被遮挡,但使用windowBackground解决了问题。