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.pswp.cn/news/375320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375320.shtml
英文地址,請注明出處:http://en.pswp.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;請參考其它文章。 ----------------準備工作-------------…