android中listview的一些樣式設置


在Android中,ListView是最經常使用的一個控件,在作UI設計的時候,不少人但願可以改變一下它的背景,使他可以符合總體的UI設計,改變背景背很簡單隻須要準備一張圖片而後指定屬性 android:background="@drawable/bg",不過不要高興地太早,當你這麼作之後,發現背景是變了,可是當你拖動,或者點擊list空白位置的時候發現ListItem都變成黑色的了,破壞了總體效果 java

這是爲何呢? android

這個要從Listview的效果提及,默認的ListItem背景是透明的,而ListView的背景是固定不變的,因此在滾動條滾動的過程當中若是實時地去將當前每一個Item的顯示內容跟背景進行混合運算,因此android系統爲了優化這個過程用,就使用了一個叫作android:cacheColorHint的屬性,在黑色主題下默認的顏色值是#191919,因此就出現了剛纔的畫面,有一半是黑色的. 數組

那怎麼辦呢? ide

若是你只是換背景的顏色的話,能夠直接指定android:cacheColorHint爲你所要的顏色,若是你是用圖片作背景的話,那也只要將android:cacheColorHint指定爲透明(#00000000)就能夠了,固然爲了美化是要犧牲一些效率的。最後就不回出現上面所說的你不想要的結果了!
自定義ListView行間的分割線 字體

在Android平臺中系統控件提供了靈活的自定義選項,全部基於ListView或者說AbsListView實現的widget控件都可以經過下面的方法設置行間距的分割線,分割線能夠自定義顏色、或圖片。 優化

  在ListView中咱們使用屬性   android:divider="#FF0000" 定義分隔符爲紅色,固然這裏值能夠指向一個drawable圖片對象,若是使用了圖片可能高度大於系統默認的像素,能夠本身設置高度好比6個像素   android:dividerHeight="6px" ,Android開發網提示固然在Java中ListView也有相關方法能夠設置。 spa

 

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()方法。 .net

 

屬性名稱 設計

描述 xml

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"。可用的單位如pxpixel像素),dpdensity-independent pixels 與密集度無關的像素), spscaled 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

屬性值必須設置爲truefalse

能夠用"@[package:]type:name

"或者"?[package:][type:]name"(主題屬性)的格式來指向某個包含此類型值的資源。

可參看全局屬性資源符號footerDividersEnabled

android:headerDividersEnabled

設成flase時,此ListView將不會在頁眉視圖後畫分隔符。此屬性缺省值爲true

屬性值必須設置爲truefalse

能夠用"@[package:]type:name

"或者"?[package:][type:]name"(主題屬性)的格式來指向某個包含此類型值的資源。

可參看全局屬性資源符號headerDividersEnabled

用心的朋友應該會發現,listview中在設置了背景以後。會有些問題。

1.、listview在拖動的時候背景圖片消失變成黑色背景。等到拖動完畢咱們本身的背景圖片才顯示出來。

2 、listview的上邊和下邊有黑色的陰影。

三、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>

相關文章
相關標籤/搜索