Sco*_*ion 4 android listview scrollbar
我有一个listview,我在其中显示我得到的数据,它在模拟器中运行良好并滚动.但是当我在滚动时在设备上测试它时显示黑屏,滚动停止后它是正常的可读形式.我不知道为什么会这样.我还附上了示例代码.
第一个XML布局: -
<?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="fill_parent"
android:orientation="vertical"
android:padding="7dp" >
<TextView
android:id="@+id/item_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:textColor="#000000"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="20dp" />
<TextView
android:id="@+id/item_subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:padding="2dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="13dp" />
Run Code Online (Sandbox Code Playgroud)
第二个ListView布局: - 它也有滚动视图.
<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="#FFFFFF">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawSelectorOnTop="false" />
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="No data"
android:textColor="#000000" />
Run Code Online (Sandbox Code Playgroud)
我使用过此布局的代码: -
ListAdapter adapter = new SimpleAdapter(this, HomeMenuActivity.mylist , R.layout.listdata,
new String[] { "Name", "Vicinity" },
new int[] { R.id.item_title, R.id.item_subtitle });
setListAdapter(adapter);
lv = getListView();
lv.setTextFilterEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我有静态arraylist"mylist",它有数据.如果有人知道为什么它在滚动时显示黑屏请指导我.
谢谢lv.setOnItemClickListener(this);
Par*_*ani 11
我完全同意上面列出的所有答案,但是让我告诉你这些信息:
默认情况下,ListView具有透明/半透明背景,因此Android UI工具包中的所有默认小部件都是如此.这意味着当ListView重绘其子项时,它必须将子项与窗口的背景混合.再一次,这需要从内存中进行昂贵的回读,这在滚动或拖动期间特别痛苦,因为每秒进行数十次绘制.
为了提高滚动操作期间的绘图性能,Android框架重用了缓存颜色提示.设置此提示后,框架会在填充了提示值的位图中复制列表的每个子项(假设另一个优化,称为滚动缓存,未关闭).然后ListView直接在屏幕上显示这些位图,因为已知这些位图是不透明的,所以不需要混合.此外,由于默认缓存颜色提示为#191919,因此在滚动期间每个项目后面都会显示深色背景.
要解决此问题,您所要做的就是禁用缓存颜色提示优化,如果使用非纯色背景,或将提示设置为适当的纯色值.您可以setCacheColorHint(int)通过使用android:cacheColorHint属性从代码(请参阅参考资料)或最好从XML 执行此操作.要禁用优化,只需使用透明色#00000000.以下屏幕截图显示了android:cacheColorHint="#00000000"XML布局文件中带有set 的列表
有关更多信息:Android ListView优化
你可以使用android:cacheColorHint="@android:color/transparent"或android:cacheColorHint="#00000000"
| 归档时间: |
|
| 查看次数: |
3196 次 |
| 最近记录: |