Android程序美化之自定義ListView背景的方法
本文實(shí)例講述了Android程序美化之自定義ListView背景的方法。分享給大家供大家參考,具體如下:
在Android中,ListView是最常用的一個(gè)控件,在做UI設(shè)計(jì)的時(shí)候,很多人希望能夠改變一下它的背景,使他能夠符合整體的UI設(shè)計(jì),改變背景背很簡(jiǎn)單只需要準(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)然為了美化是要犧牲一些效率的。最后就不回出現(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圖片對(duì)象,如果使用了圖片可能高度大于系統(tǒng)默認(rèn)的像素,可以自己設(shè)置高度比如6個(gè)像素 android:dividerHeight="6px" ,Android開發(fā)網(wǎng)提示當(dāng)然在Java中ListView也有相關(guān)方法可以設(shè)置。
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)設(shè)置Item之間無間隙
在xml文件中ListView控件中加入如下屬性:
android:divider="#00000000"
或者在javaCode中如下定義:
listView.setDividerHeight(0);
3)自定義的BaseAdapter中調(diào)用notifyDataSetChanged()方法會(huì)重新調(diào)用BaseAdapter的getView()方法。
用心的朋友應(yīng)該會(huì)發(fā)現(xiàn),listview中在設(shè)置了背景之后。會(huì)有些問題。
1.、listview在拖動(dòng)的時(shí)候背景圖片消失變成黑色背景。等到拖動(dòng)完畢我們自己的背景圖片才顯示出來。
問題1 有如下代碼結(jié)解決
android:scrollingCache="false"
2 、listview的上邊和下邊有黑色的陰影。
問題2 用如下代碼解決:
android:fadingEdge="none"
3、lsitview的每一項(xiàng)之間需要設(shè)置一個(gè)圖片做為間隔。
問題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>
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android視圖View技巧總結(jié)》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android文件操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android自定義漸變式炫酷ListView下拉刷新動(dòng)畫
- Android開發(fā)之ListView的head消失頁面導(dǎo)航欄的漸變出現(xiàn)和隱藏
- Android UI設(shè)計(jì)系列之自定義ListView仿QQ空間阻尼下拉刷新和漸變菜單欄效果(8)
- Android 中實(shí)現(xiàn)ListView滑動(dòng)隱藏標(biāo)題欄的代碼
- Android實(shí)現(xiàn)為L(zhǎng)istView同時(shí)設(shè)置點(diǎn)擊時(shí)的背景和點(diǎn)擊松手之后的背景
- Android ListView的item背景色設(shè)置和item點(diǎn)擊無響應(yīng)的解決方法
- android 通過向viewpage中添加listview來完成滑動(dòng)效果(類似于qq滑動(dòng)界面)
- Android中實(shí)現(xiàn)水平滑動(dòng)(橫向滑動(dòng))ListView示例
- 詳解Android中實(shí)現(xiàn)ListView左右滑動(dòng)刪除條目的方法
- Android ListView滑動(dòng)改變標(biāo)題欄背景漸變效果
相關(guān)文章
Android使用AsyncQueryHandler實(shí)現(xiàn)獲取手機(jī)聯(lián)系人功能
這篇文章主要為大家詳細(xì)介紹了Android使用AsyncQueryHandler實(shí)現(xiàn)獲取手機(jī)聯(lián)系人功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android 開機(jī)充電圖標(biāo)和充電動(dòng)畫效果
這篇文章主要介紹了Android 開機(jī)充電圖標(biāo)和充電動(dòng)畫效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Android設(shè)計(jì)模式之代理模式Proxy淺顯易懂的詳細(xì)說明
Android設(shè)計(jì)模式之代理模式也是平時(shí)比較常用的設(shè)計(jì)模式之一,代理模式其實(shí)就是提供了一個(gè)新的對(duì)象,實(shí)現(xiàn)了對(duì)真實(shí)對(duì)象的操作,或成為真實(shí)對(duì)象的替身2018-03-03Android通過Handler與AsyncTask兩種方式動(dòng)態(tài)更新ListView(附源碼)
這篇文章主要介紹了Android通過Handler與AsyncTask兩種方式動(dòng)態(tài)更新ListView的方法,結(jié)合實(shí)例形式分析了ListView動(dòng)態(tài)更新的常用技巧,并附上完整實(shí)例源碼供讀者下載,需要的朋友可以參考下2015-12-12Android studio刪除Android項(xiàng)目方法
在本篇內(nèi)容里我們給大家介紹的是關(guān)于Android studio刪除Android項(xiàng)目方法和步驟,需要的可以學(xué)習(xí)下。2018-12-12Android 簡(jiǎn)單實(shí)現(xiàn)一個(gè)流式布局的示例
本篇文章主要介紹了Android 簡(jiǎn)單實(shí)現(xiàn)一個(gè)流式布局的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02Android實(shí)現(xiàn)好看的微信聊天氣泡效果
在聊天類應(yīng)用中,通常用氣泡作為聊天內(nèi)容的背景色,比如微信的聊天背景,別人發(fā)過來的是白色的氣泡,自己發(fā)的是綠色的氣泡。本文將用Android實(shí)現(xiàn)好看的微信聊天氣泡效果,感興趣的可以了解一下2022-06-06