背景列表视图变成黑色时滚动

我已经创建了一个特定的列表,它存在于以下元素中,以创建一个可滚动的列表,每一行都包含左侧的图像和右侧的一些文本:

从“根”布局开始:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#C8C8C8"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"/>
</LinearLayout>

然后在ListView中,我放置以下“row”项:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/bg_row"
>
<ImageView
android:layout_width="wrap_content"
android:paddingLeft="10px"
android:paddingRight="15px"
android:paddingTop="5px"
android:paddingBottom="5px"
android:layout_height="wrap_content"
android:src="@drawable/bg_image"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5px"
android:paddingBottom="5px"
android:textSize="16sp"
android:textColor="#000000"
android:layout_gravity="center"
android:maxHeight="50px"/>
</LinearLayout>
只要屏幕是静态显示的(在没有移动),它将显示正确,但当我开始滚动列表的行项目的背景(“图标”,可以在代码中显示)将显示正确,但“根”布局的背景将变成完全黑色…当滚动停止时,背景将在大多数情况下恢复其颜色… 当我测试时,我还在具有相同背景的根元素中添加了TextView,这将在列表滚动时保留它的颜色… 你知道为什么会这样吗,怎么解决?< / p >
91056 次浏览

ListView标签上添加一个属性

android:cacheColorHint="#00000000" // setting transparent color

更多细节请查看这个博客

你可以这样用:

list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);

这很简单,只需在布局文件中使用这一行:

android:scrollingCache="false"

是这样的:

<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>

android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"
android:cacheColorHint="#00000000"/>

对于这个问题我们有很多的选项,你可以通过编程把背景设置为透明的

yourlistview.setCacheColorHint(Color.TRANSPARENT);

或者通过XML

android:cacheColorHint="@android:color/transparent"

这个问题有很多答案,但今天我意识到这个问题仍然缺少一个关键的信息。

这个问题有两种可能的解决方案,两个都可以,但每个都应该在不同的情况下使用。


方法

当你的ListView有一个固体颜色背景时,使用android:cacheColorHint

<item name="android:cacheColorHint">@android:color/transparent</item>

当你的ListView有一个(复杂的)图像作为背景时,使用android:scrollingCache

<item name="android:scrollingCache">false</item>

请注意

当你的ListView有纯色背景时,这两种方法都可以工作,所以不仅cacheColorHint可以工作。但是不建议对纯色背景使用scrolingCache方法,因为它关闭了用于平滑动画和滚动ListView的优化方法。

注为注: scrolingCache设置为false并不一定意味着ListView的动画和滚动会变慢。

android:cacheColorHint="@android:color/transparent"

android:cacheColorHint="#00000000"// setting transparent color

设置listview的背景。

在xml中使用Listview设置

    android:cacheColorHint="@android:color/transparent"

我在listView中使用图像,它有时在三星s4中变成黑色,甚至没有滚动。这是我在适配器中犯的一个愚蠢的错误。我刚刚把我的视图为空来解决这个问题

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
convertView = null; // convert view should be null
if (convertView == null) {
holder = new Holder();
convertView = inflater1.inflate(R.layout.listview_draftreport_item, null);
}
}

以下对我有用:

myListView.setScrollingCacheEnabled(false);

添加属性

android:cacheColorHint="#00000000" //transparent color