发现了一个list滚动时,某item背景透明的问题。网上搜索一下,发现有很多人在问list背景黑色的问题,交流中给出的解决方案基本上很统一。
先是解释问题产生的原因是Android对list的滚动做了显示优化,用写在该list的layout文件中的android:cacheColorHint颜色值与item背景混合,黑色主题下该颜色值默认为#FF191919,于是背景黑了。
解决方案是关掉优化。怎么关?有说把android:cacheColorHint设置为"@android:color/transparent",也有说把"@android:color/transparent"改为"#00000000"。
其实这个“关”,就是把那个颜色设置为透明。当然,设置成与背景相同的颜色也可以。或者设置成"@null"。可参考这篇文章:http://yuanzhifei89.iteye.com/blog/973724
稍微努点力就能搜索到Romain Guy的一篇博客,Romain是Google的Android开发工程师,负责图形和动画相关的东西,据说ListView就是他整的。
他的这篇博客叫“Why is my list black? An Android optimization”,说的就是这个事。到底做了怎样的优化,这个现象是怎么产生的,文章里说得比较清楚了。文末也给出了解决方案,这是最权威的解答了。
但是,我所搜到的所有的讨论,和我遇到的情况还不大一样。
看上去,各种讨论里说的是似乎是整个list背景黑掉或者透明了,或者至少是除了当前选中项之外的其他所有item的背景黑掉或者透明掉。
我遇到的是,某一个item的背景透明了。出状况的item比较随机。
listview的layout文件中,android:cacheColorHint已经设置为"@android:color/transparent",改为"#00000000"依然如此。
几乎无计可施的情况下,领会Romain说的优化思路,尝试把android:cacheColorHint设置为listview的背景色。
可是,我们给listview贴图作为背景的,而android:cacheColorHint不支持设置资源。
所以,尝试给它一个接近背景色贴图颜色的不透明色值,还好,这张图不是五彩斑斓的,虽有渐进色,但还是比较难一眼辨明。
好吧,算是临时解决了。
我遇到的这个状况,在我测试过的不多的手机和平板中,只在Lenovo S890上出现。有谁知道究竟是为什么么?
[2013-06-19 Edit] 几天后再次看这个问题,有一点新发现,对于背景贴图的listview,无法设置cacheColorHint颜色值,可以用这个方法关闭该优化。
android:scrollingCache="false"
默认是"true",打开优化可以使render更快,但是需要更多的内存。测试一下关掉优化是否可以接受。
相关推荐
在Android应用开发中,UI设计和用户体验是至关重要的部分,特别是在构建列表视图(ListView)时。本知识点主要探讨如何实现“滑动ListView时标题置顶”和“ListView吸顶效果”,以及如何使安卓系统状态栏透明化。这些...
`Dialog`是Android系统提供的一个组件,它以半透明的弹出窗口形式展示在当前活动(Activity)之上,用于提示用户进行一些操作或显示额外信息。创建`Dialog`通常有两种方式:通过继承`Dialog`类或使用`AlertDialog....
在Android开发中,ListView是一种非常重要的组件,它用于展示大量数据的列表形式,常用于创建如联系人列表、菜单选项等界面。拖拽列表功能可以让用户通过手势直接改变ListView中行的顺序,提供了更加直观和友好的...
本资料包“安卓Android源码——listview快速滑动,修改默认的滑动条.rar”提供了解决这些问题的解决方案。 首先,我们要讨论如何优化ListView的快速滑动性能。在Android中,ListView通过使用ViewHolder模式来提高...
通过学习和实践这个`PopupWindow`与`ListView`结合的示例,开发者能够掌握创建自定义弹出菜单的技巧,进一步提升Android应用的用户体验。记得在实际项目中,根据具体场景调整`PopupWindow`的大小、位置以及显示和...
如果你希望改变背景,但不希望滚动时破坏整体UI效果,可以通过`android:cacheColorHint`设置颜色,或者设置为透明(`#00000000`)以适应自定义背景图片。 4. **divider属性**: - `android:divider="@drawable/...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了增强用户体验和视觉效果,开发者常常会尝试实现一些独特的UI效果,比如3D滚动效果。本篇将深入探讨如何在Android中实现ListView的3D弹性滚动...
### Android ListView 动态刷新...通过上述步骤,我们可以实现Android应用中`ListView`的动态刷新和透明界面的效果。这对于提升用户体验和应用的交互性至关重要。开发者应熟练掌握这些技巧,以便在实际项目中灵活运用。
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了增强用户体验和界面的视觉吸引力,开发者经常尝试实现各种独特的效果,比如3D效果。本篇将详细讲解如何在Android中实现ListView的3D翻转效果...
在Android开发中,有时我们需要创建一个可自定义的弹出菜单,这通常通过使用`PopupWindow`类来实现。`PopupWindow`是Android系统提供的一个轻量级窗口,它可以显示在屏幕上的任意位置,用于创建浮动、弹出式的UI组件...
`PopupWindow`是Android提供的一个轻量级窗口,它可以在屏幕任意位置显示,并且可以设置背景透明度、大小、动画效果等。创建`PopupWindow`的基本步骤如下: 1. 创建一个布局文件(例如popup_list.xml),该文件包含...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。在“Android应用源码ListView 中的item随意拖动.zip”这个压缩包中,包含的源码示例是关于如何实现ListView的item(列表项)的自由拖动功能...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。"android listview 拖拽效果"是指在ListView上实现的一项高级功能,允许用户通过手势拖动ListView中的每个条目(item)来改变它们的位置...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。`Android-SlideListView(ListView侧滑实现)`项目是针对ListView进行的一种扩展,它引入了侧滑手势来实现更多的交互功能,如滑动删除和滑动展开...
本篇将深入探讨如何为Android ListView实现四种不同的加载动画:左边飞入、旋转、从上飞入以及透明度变化。 首先,我们需要理解ListView的工作机制。ListView通过ViewHolder模式来提高性能,避免频繁的视图创建和...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了提供更好的用户体验,开发者经常会在ListView中实现一种类似物理运动的阻尼效果,即当用户快速滑动ListView到列表顶部或底部时,ListView会...
例如,可以使用`ObjectAnimator`来改变`ViewPager`或`ListView`Item的透明度、大小等属性,从而实现更为自然和流畅的过渡效果。 此外,为了优化性能,避免`ListView`和`ViewPager`的过度绘制,需要注意适当地复用`...
我们可以通过监听ListView的`OnItemClickListener`并改变被选中项的背景颜色或透明度来实现。 1. 在你的Activity或Fragment中,为ListView设置`OnItemClickListener`: ```java listView.setOnItemClickListener...
在Android开发中,实现气泡式ListView是一种常见的需求,它通常用于展示通知或者提示信息,因为其独特的设计能吸引用户的注意力。这篇原创博客探讨了如何在Android应用中创建这样一个功能,下面将详细介绍这个过程。...
在Android开发中,ListView是一种常用的视图组件,用于展示大量数据列表。然而,系统的ExpandableListView虽然提供了子项展开和收缩的功能,但其默认样式和交互可能无法满足开发者对更个性化动画效果的需求。...