在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果,如下图所示:
这是为什么呢?
这个要从Listview的效果说起,默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint的属性,在黑色主题下默认的颜色值是#191919,所以就出现了刚才的画面,有一半是黑色的.
那怎么办呢?
如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了,当然为了美化是要牺牲一些效率的。最后就不回出现上面所说的你不想要的结果了!
自定义ListView行间的分割线
在Android平台中系统控件提供了灵活的自定义选项,所有基于ListView或者说AbsListView实现的widget控件均可以通过下面的方法设置行间距的分割线,分割线可以自定义颜色、或图片。
在ListView中我们使用属性 android:divider="#FF0000" 定义分隔符为红色,当然这里值可以指向一个drawable图片对象,如果使用了图片可能高度大于系统默认的像素,可以自己设置高度比如6个像素 android:dividerHeight="6px" ,Android开发网提示当然在Java中ListView也有相关方法可以设置。
|
1)点击Item时无背景颜色变化
在xml文件中的ListView控件中加入如下属性:
android:listSelector="@drawable/timer_list_selector"
在drawable中定义timer_list_selector的属性值
timer_list_selector.xml中定义如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@android:color/transparent" />
</selector>
在values文件夹下的colors.xml中定义transparent如下:
<color name="transparent">#50000000</color>
2)设置Item之间无间隙
在xml文件中ListView控件中加入如下属性:
android:divider="#00000000"
或者在javaCode中如下定义:
listView.setDividerHeight(0);
3)自定义的BaseAdapter中调用notifyDataSetChanged()方法会重新调用BaseAdapter的getView()方法。
属性名称
|
描述
|
android:choiceMode
|
规定此ListView所使用的选择模式。缺省状态下,list没有选择模式。
属性值必须设置为下列常量之一: none,值为0,表示无选择模式;
singleChoice,值为1,表示最多可以有一项被选中;
multipleChoice,值为2,表示可以多项被选中。
可参看全局属性资源符号choiceMode。
|
android:divider
|
规定List项目之间用某个图形或颜色来分隔。可以用"@[+] [package:]type:name"或者"?[package:][type:]name"(主题属性)的形式来指向某个已有资源;也可以用"#rgb","#argb","#rrggbb"或者"#aarrggbb"的格式来表示某个颜色。
可参看全局属性资源符号divider。
|
android:dividerHeight
|
分隔符的高度。若没有指明高度,则用此分隔符固有的高度。必须为带单位的浮点数,如"14.5sp"。可用的单位如px(pixel像素),dp(density-independent pixels 与密集度无关的像素), sp(scaled pixels based on preferred font size 基于字体大小的固定比例的像素), in (inches英寸), mm (millimeters毫米)。
可以用"@[package:]type:name
"或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。
可参看全局属性资源符号dividerHeight。
|
android:entries
|
引用一个将使用在此ListView里的数组。若数组是固定的,使用此属性将比在程序中写入更为简单。
必须以"@[+][package:]type:name"或者 "?[package:][type:]name"的形式来指向某个资源。
可参看全局属性资源符号entries。
|
android:footerDividersEnabled
|
设成flase时,此ListView将不会在页脚视图前画分隔符。此属性缺省值为true。
属性值必须设置为true或false。
可以用"@[package:]type:name
"或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。
可参看全局属性资源符号footerDividersEnabled。
|
android:headerDividersEnabled
|
设成flase时,此ListView将不会在页眉视图后画分隔符。此属性缺省值为true。
属性值必须设置为true或false。
可以用"@[package:]type:name
"或者"?[package:][type:]name"(主题属性)的格式来指向某个包含此类型值的资源。
可参看全局属性资源符号headerDividersEnabled。
|
用心的朋友应该会发现,listview中在设置了背景之后。会有些问题。
1.、listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。
2 、listview的上边和下边有黑色的阴影。
3、lsitview的每一项之间需要设置一个图片做为间隔。
针对以上问题 在listview的xml文件中设置一下语句。
问题1 有如下代码结解决 android:scrollingCache="false"
问题2 用如下代码解决:android:fadingEdge="none"
问题3 用如下代码解决: android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一个图片资源
总体如下
<ListView
android:id="@+id/myListView01"
android:layout_width="fill_parent"
android:layout_height="287dip"
android:fadingEdge="none"
android:divider="@drawable/list_driver"
android:scrollingCache="false"
android:background="@drawable/list">
</ListView>
分享到:
相关推荐
本文将深入探讨如何在Android中实现ListView的边框圆角美化,以此来达到类似iPhone界面的视觉效果。 首先,我们需要理解ListView的基本结构。ListView是由多个View(通常是ListView项布局,即Item Layout)组成的,...
然而,为了提升用户体验和满足界面设计需求,开发者往往需要对ListView进行自定义美化,包括改变其背景、分割线样式以及处理各种交互效果。本篇文章将详细讲解如何在Android中自定义ListView的背景、行间的分割线...
android ListView美化.docx androidshape.docx android_textview.设置文本属性.docx android_设置字体样式.docx Android_用纯代码实现复杂界面.doc android+struts2.docx android—EditText.docx android—...
"android listview小例子"这个项目提供了一个简单的ListView demo,其主要目的是展示如何创建一个具有背景颜色和美化效果的ListView。下面我们将深入探讨这个话题,了解如何在Android应用中实现一个炫目多彩的...
在Android开发中,ListView是...在实际开发中,还可以根据需求对列表项的样式进行美化,或者使用更高效的ViewHolder模式优化ListView的性能。通过这种方式,开发者可以灵活地构建各种列表型界面,满足用户的交互需求。
android-custom-array-adapter-demo, Android演示如何使用定制适配器填充 ListView Android定制适配器演示这里示例演示如何使用自定义布局模板显示一个基于 array 数据源的ListView 。 在这种情况下,有一个 User ...
在Android开发中,ListView是一种非常常见且重要的组件,它用于展示大量的列表数据,通常用于创建如联系人列表、消息列表等界面。ListView的简单美化是提升应用用户体验的关键步骤,这涉及到自定义适配器、视图复用...
最后,关于控件美化,Android提供了多种方式: 1. **自定义样式和主题**:可以通过创建XML样式文件,定义自定义的主题和样式,应用到控件上。 2. **自定义布局**:为ListView的每一项定义独特的布局,使用...
在Android应用开发中,ListView是常用的视图组件,用于展示大量数据列表,而圆角ListView则是对默认样式的一种美化,可以提升用户界面的视觉效果。本文将深入探讨如何实现一个带有圆角的ListView,并解决其与...
### 实现在Android的PopupWindow中显示ListView #### 一、简介 在Android开发过程中,PopupWindow是一种非常实用的UI组件,它可以用来展示临时性的信息或者菜单等。本篇文档主要介绍如何在PopupWindow中集成一个...
Android为ListView添加圆角边框效果,安卓UI设计的例子,默认情况下ListView的外框是直角的,也就是大家习惯的样式,但为了美化更突出,或者与你的应用风格更吻合,有时候可能修饰成圆角边框,本例子就是实现了这一...
在Android开发中,ListView是一种常用的控件,用于展示可滚动的列表数据。在许多应用场景中,我们可能需要将ListView呈现为表格形式,例如显示股票行情。以下是如何在Android中使用ListView实现漂亮的表格效果的详细...
本教程将详细讲解如何通过XML解析将数据传递给ListView,并将ListView布局成表格形式,同时利用Style来美化界面。 首先,让我们了解一下XML解析。XML(Extensible Markup Language)是一种结构化数据格式,常用于...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的列表数据。在某些场景下,我们可能需要在ListView中绘制表格来展示结构化的信息。本文将详细介绍如何在Android中使用ListView来实现表格的绘制。 首先...
Delphi 12 FMXUI 是一款强大的跨平台应用程序开发工具,它允许开发者构建美观、高性能的应用程序,适用于Windows、macOS、iOS、Android以及Linux等多个操作系统。在Delphi 12中,FireMonkey (FMX)框架是其核心部分,...
在Android开发中,ListView是一个非常重要的控件,它允许开发者以列表形式展示大量数据,同时提供了高度的可定制性。本实例源码着重讲解如何利用ListView控件来创建具有美观自定义表格效果的应用界面。 首先,我们...
本文将介绍如何在 Android 的 PopupWindow 中显示 ListView,并对其进行美化。 首先,需要创建一个 PopupWindow,并设置相应的样式。可以使用 LayoutInflater 将布局文件 inflate 到 View 中,然后将其设置为 ...
在Android开发中,ListView是展示大量数据常用的组件,但如果不进行优化,可能会导致性能问题,如滚动不流畅、内存消耗过大等。本篇文章将详细探讨ListView的优化策略,包括适配器的重用机制,点击事件处理,以及...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可定制性使其成为开发者们的首选。本篇文章将深入探讨如何实现ListView的高级显示效果,包括美观大方的设计以及简单实用的交互...