android中listview的一些样式设置

在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>

转载于:https://www.cnblogs.com/cmblogs/p/4269500.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win32ASM-进程学习【2】

获取运行中的句柄 1.从窗口句柄中获取进程句柄 要对进程进行某种操作,就必须首先知道该进程的句柄或者进程ID 对于自己创建的子进程来说CreateProcess函数返回了子进程句柄和进程的ID 但是如果如果要对系统中运行的某个进程进行操作,那么首先获取他们的句柄才行 如果知道某个…

完美解决IE8有两个进程的问题

完美解决IE8有两个进程的问题&#xff0c;照以下方法设置后就只有一个进程了&#xff0c;没有什么负影响哦&#xff01; 方法&#xff1a; 1、winR&#xff0c;在运行框里输入&#xff1a;gpedit.msc&#xff0c;回车进入组策略设置。 2、依次展开&#xff1a;计算机配置——管…

【转】gvim配置及相关插件安装

0.准备软件及插件。(a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe。(b)vimcdoc-1.7.0-setup.exe 地址http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download(c)ec57w32.zip 地址http://prdownloads.sourceforge.net/ctags/ec57w32.zip(…

Win32ASM-进程学习[3]-读写进程空间

invoke ReadProcessMemory,hProcess,lpBaseAddress,lpBuffer,dwSize,lpNumberOfBytesReadinvoke WriteProcessMemory,hProcess,lpBaseAddress,lpBuffer,dwSize,lpNumberOfBytesWritten hProcess 指定将要被读写的目标进程句柄 lpBaseAddress 目标进程中被读写的起始线性地址. …

MongoDB使用记录

安装服务 使用以下命令将MongoDB安装成为Windows服务。笔者的MongoDB目录为D:\Program Files\mongodb mongod --logpath "D:\Program Files\mongodb\data\logs.txt" --logappend --dbpath "D:\Program Files\mongodb\data" --directoryperdb --serviceName…

OC基础知识

Object C 语言基础 第一节总括 这一节是对Objective-C(以后简称OC)的简要介绍,目的是使读者对OC有一个概括的认识。 1.面象的读者 在阅读本文之前,应具备使用与C类似的编程语言(如C,C,JAVA)的一些经验,同时熟悉面向对象编程。 2.OC简介 OC是以SmallTalk为基础&#xff0c;建立…

Windows使用筛选器来处理异常

很久木有管博客了 最近也没有学什么 Dos系统下发生异常后,系统会调用int 24h服务例程,然后根据中断的返回值决定下一步要做什么,他会在屏幕上显示ignore Retry Fail Abort 让用户选择进而进行下一步操作 这样的话 只要应用程序截取int 24h中断,就可以随意的"胡作非…

Android 高级编程 RecyclerView 控件的使用

RecyclerView 是Android 新添加的一个用来取代ListView的控件&#xff0c;它的灵活性与可替代性比listview更好。 看一下继承关系&#xff1a; ava.lang.Object ↳android.view.View ↳android.view.ViewGroup ↳android.support.v7.widget.RecyclerViewKnown Direct …

Android下点亮LED

http://blog.csdn.net/cpj_phone/article/details/43562551转载于:https://www.cnblogs.com/Ph-one/p/4276974.html

SEH处理异常

Win32为每个线程定义了一个线程信息块,其中保存了线程的一些属性数据,线程信息块的属性被定义为NT_TIB结构 typedef struct _NT_TIB { struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; PVOID StackBase; PVOID StackLimit; PVOID SubSystemTib; union { PVOID FiberDa…

Asp.net MVC 4新项目中创建area的后续操作

Asp.net MVC 4新项目中创建area后&#xff0c;往往HomeController与area的HomeController路由发生混淆&#xff0c;需要手工设置一些地方避免mvc无法识别默认路由的状况。 无废话具体步骤&#xff1a; 1. 检查早Global.asax和\App_Start\RouteConfig.cs中是否已经自动添加了Are…

55-混沌操作法之我见:一、逆势操作.(2015.2.7)

混沌操作法之我见&#xff1a;一、逆势操作 首先谈谈&#xff0c;均线以及鳄鱼线。单独的市场价格表达了t时刻价格的个体情况&#xff0c;均线表达了一段时间内价格的综合情况。t时刻的价格与均线的比较&#xff0c;表达了考虑了过去以及当前综合价格的比较情况&#xff0c;即t…

SEH链和展开操作

每次我们定义了一个新的SEH异常处理回调函数,EXCEPTION_REGISTRATION结构的prev字段都被要求填写上一个EXCEPTION_REGISTRATION结构的地址,随着应用程序对模块的调用一层层深入下去的时候,那么最后回调函数会形成一个SEH链 当程序中有多个线程在运行的时候,每个线程中都会存在各…

spring的基本知识

首先是回顾一下spring的基本知识 1、controller 控制器&#xff08;注入服务&#xff09; 2、service 服务&#xff08;注入dao&#xff09; 3、repository dao&#xff08;实现dao访问&#xff09; 4、component &#xff08;把普通pojo实例化到spring容器中&#xff0c;相当于…

vs2010 EF4.0 访问mysql

需要安装mysql-connector-net-6.3.5 6.8.9的安装完后在dbfirst里找不到对应的提供程序 链接字符串里需要 指定下编码(如果不是gbk的话) <add name"sourceEntities" connectionString"metadatares://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;pr…

Win32ASM 变长参数的理解

C语言里面 提供了一些宏 可以使用变长参数 int MsgPrintf(INT dwszBuffer,TCHAR* szCaption,TCHAR* szFormat,...){LPVOID lpszBuffer;va_list pArgList;va_start(pArgList,szFormat);lpszBuffer HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,100);_vsntprintf((LPTSTR)lpsz…

jquery判断一个div的边界是否超出另外一个div的边界

摘要&#xff1a;本文简单介绍jquery判断一个div的边界是否超出另外一个div的边界&#xff0c;如果超出边界做出相应的处理。 1、实现效果 判断前 判断后 2、实现思路 实现类似的判断&#xff0c;主要是获取两个div在浏览器中的上下左右的四至&#xff0c;在jquery中&#xff0…

Gson解析Json格式数据

//数据定义&#xff1a;class User{ String name; String password; String getName(){}void setName(){}}Gson gsonnew Gson(); ////解析一条json数据&#xff1a;令str为[{"name":"21001","password":"21001"}] User usernew User()…

进程的细节

从今天开始,重新学习一些细节性质的东西 一.在VS开发环境中,应用程序的入口点: _tWinMain WinMainCRTStartup _tWinMain wWinMainCRTStartup _tmain mainCRTStartup _tmain wmainCRTStartup 相关的介…

maven环境快速搭建(转)

最近&#xff0c;开发中要用到maven&#xff0c;所以对maven进行了简单的学习。因为有个maven高手在身边&#xff0c;所以&#xff0c;很快就上手了&#xff0c;我这里算是自我总结吧。关于maven是什么东东&#xff0c;请参考其它文章。 ----------------准备工作-------------…