ListView的分割线相关属性
1.如何修改ListView分割線
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/android:list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="#FFCC00" android:dividerHeight="4px"/> </LinearLayout>android:divider="#FFCC00"
android:dividerHeight="4px"
? ? ? 這兩句是關(guān)鍵。 ? ? ?
? ? ? 在Android 中,ListView是最常用的一個(gè)控件,在做UI設(shè)計(jì)的時(shí)候,很多人希望能夠改變一下它的背景,使他能夠符合整體的UI設(shè)計(jì),改變背景背很簡單只需要準(zhǔn)備一張圖片然后指定屬性 android:background="@drawable/bg",不過不要高興地太早,當(dāng)你這么做以后,發(fā)現(xiàn)背景是變了,但是當(dāng)你拖動(dòng),或者點(diǎn)擊list空白位置的時(shí)候發(fā)現(xiàn)ListItem都變成黑色的了,破壞了整體效果。 ? ? ?
? ? ? 這是為什么呢? ? ? ?
? ? ? 這個(gè)要從Listview的效果說起,默認(rèn)的ListItem背景是透明的,而 ListView的背景是固定不變的,所以在滾動(dòng)條滾動(dòng)的過程中如果實(shí)時(shí)地去將當(dāng)前每個(gè)Item的顯示內(nèi)容跟背景進(jìn)行混合運(yùn)算,所以Android系統(tǒng)為了優(yōu)化這個(gè)過程用,就使用了一個(gè)叫做android:cacheColorHint的屬性,在黑色主題下默認(rèn)的顏色值是#191919,所以就出現(xiàn)了剛才的畫面,有一半是黑色的。那怎么辦呢?如果你只是換背景的顏色的話,可以直接指定 android:cacheColorHint為你所要的顏色,如果你是用圖片做背景的話,那也只要將android:cacheColorHint指定 為透明(#00000000)就可以了,當(dāng)然為了美化是要犧牲一些效率的。最后就不會(huì)出現(xiàn)上面所說的你不想要的結(jié)果了!自定義ListView行間的分割線在Android平臺(tái)中系統(tǒng)控件提供了靈活的自定義選項(xiàng),所有基于ListView或者說AbsListView實(shí)現(xiàn)的Widget控件均可以通過下面的方法設(shè)置行間距的分割線,分割線可以自定義顏色、或圖片。在ListView中我們使用屬性android:divider="#FF0000" 定義分隔符為紅色,當(dāng)然這里值可以指向一個(gè)drawable圖片對象,如果使用了圖片可能高度大于系統(tǒng)默認(rèn)的像素,可以自己設(shè)置高度比如6個(gè)像素 ? android:dividerHeight="6px" ,Android開發(fā)網(wǎng)提示當(dāng)然在Java中ListView也有相關(guān)方法可以設(shè)置。
2.ListView其他效果
2.1.點(diǎn)擊Item時(shí)無背景顏色變化
在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.2.設(shè)置Item之間無間隙
在xml文件中ListView控件中加入如下屬性:android:divider="#00000000"
或者在javaCode中如下定義:
listView.setDividerHeight(0);
2.3.自定義的BaseAdapter中調(diào)用notifyDataSetChanged()方法會(huì)重新調(diào)用BaseAdapter的getView()方法。
3.ListView屬性名稱描述
android:choiceMode規(guī)定此ListView所使用的選擇模式。缺省狀態(tài)下,list沒有選擇模式。
屬性值必須設(shè)置為下列常量之一: none,值為0,表示無選擇模式;
singleChoice,值為1,表示最多可以有一項(xiàng)被選中;
multipleChoice,值為2,表示可以多項(xiàng)被選中。
可參看全局屬性資源符號(hào)choiceMode。
android:divider
規(guī)定List項(xiàng)目之間用某個(gè)圖形或顏色來分隔。可以用"@[+] [package:]type:name"或者"?[package:]
[type:]name"(主題屬性)的形式來指向某個(gè)已有資源;也可以用"#rgb","#argb","#rrggbb"或者"#aarrggbb"的格式來表示某個(gè)顏色。
可參看全局屬性資源符號(hào)divider。
android:dividerHeight
分隔符的高度。若沒有指明高度,則用此分隔符固有的高度。必須為帶單位的浮點(diǎn)數(shù),如"14.5sp"。可用的單位如px(pixel像素),dp(density-independent pixels 與密集度無關(guān)的像素), sp(scaled pixels based on preferred font size 基于字體大小的固定比例的像素), in (inches英寸), mm (millimeters毫米)。
可以用"@[package:]type:name"或者"?[package:][type:]name"(主題屬性)的格式來指向某個(gè)包含此類型值的資源。
可參看全局屬性資源符號(hào)dividerHeight。
android:entries
引用一個(gè)將使用在此ListView里的數(shù)組。若數(shù)組是固定的,使用此屬性將比在程序中寫入更為簡單。
必須以"@[+][package:]type:name"或者 "?[package:][type:]name"的形式來指向某個(gè)資源。
可參看全局屬性資源符號(hào)entries。
android:footerDividersEnabled
設(shè)成flase時(shí),此ListView將不會(huì)在頁腳視圖前畫分隔符。此屬性缺省值為true。
屬性值必須設(shè)置為true或false。
可以用"@[package:]type:name
"或者"?[package:][type:]name"(主題屬性)的格式來指向某個(gè)包含此類型值的資源。
可參看全局屬性資源符號(hào)footerDividersEnabled。
android:headerDividersEnabled
設(shè)成flase時(shí),此ListView將不會(huì)在頁眉視圖后畫分隔符。此屬性缺省值為true。
屬性值必須設(shè)置為true或false。
可以用"@[package:]type:name
"或者"?[package:][type:]name"(主題屬性)的格式來指向某個(gè)包含此類型值的資源。
可參看全局屬性資源符號(hào)headerDividersEnabled。
4.ListView設(shè)置背景的問題
用心的朋友應(yīng)該會(huì)發(fā)現(xiàn),listview中在設(shè)置了背景之后。會(huì)有些問題。1.ListView在拖動(dòng)的時(shí)候背景圖片消失變成黑色背景。等到拖動(dòng)完畢我們自己的背景圖片才顯示出來
2.ListView的上邊和下邊有黑色的陰影。
3.ListView的每一項(xiàng)之間需要設(shè)置一個(gè)圖片做為間隔。
針對以上問題 在listview的xml文件中設(shè)置一下語句。
問題1 ?有如下代碼解決:android:scrollingCache="false"
問題2 ?用如下代碼解決:android:fadingEdge="none" ?
問題3 ?用如下代碼解決:android:divider="@drawable/list_driver" ?其中 ?
@drawable/list_driver 是一個(gè)圖片資源
?
總體如下
<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>
1.去掉滑動(dòng)到頂點(diǎn)和底邊時(shí)的黑色陰影
android:fadingEdge="none" ?
2.去掉拖動(dòng)時(shí)默認(rèn)黑色底色
android:cacheColorHint=“#00000000” ?
3.去掉選中時(shí)的黃色底色
android:listSelector="#00000000"
原文地址:點(diǎn)擊打開鏈接
總結(jié)
以上是生活随笔為你收集整理的ListView的分割线相关属性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为云计算IE面试笔记-桌面云用户登录连
- 下一篇: CAN通讯方式--秉火STM32学习笔记