『壹』 android ListView用法和屬性
ListView是一個用來縱向顯示條目的視圖,這些條目內容來自於與該ListView相關聯的ListAdapter.
android:divider//在列表條目之間顯示的drawable或color
android:dividerHeight//用來指定divider的高度
android:entries//構成ListView的數組資源的引用。對於某些固定的資源,這個屬性提供了比在程序中添加資源更加簡便的方式
android:footerDividersEnabled//當設為false時,ListView將不會在各個footer之間繪制divider.默認為true。
android:headerDividersEnabled//當設為false時,ListView將不會在各個header之間繪制divider.默認為true
android:cacheColorHint// 表明這個列表的背景始終以單一、固定的顏色繪制,可以優化繪制過程。
android:choiceMode//為視圖指定選擇的行為。可選的類型有:none、singleChoice、multipleChoice、multipleChoiceModal。
android:drawSelectorOnTop// 若設為true,選擇器將繪制在選中條目的上層。默認為false。
android:fastScrollEnabled// 設置是否允許使用快速滾動滑塊。
android:addStatesFromChildren// 設置這個ViewGroup的drawable狀態是否包括子View的狀態。若設為true,當子View如EditText或Button獲得焦點時,整個ViewGroup也會獲得焦點。
android:alwaysDrawnWithCache// 設置ViewGroup在繪制子View時是否一直使用繪圖緩存。默認為true。
android:animationCache// 設置布局在繪制動畫效果時是否為其子View創建繪圖緩存。若設為true,將會消耗更多的內存,要求持續時間更久的初始化過程,但表現更好。默認為true。
android:clipChildren// 設置子View是否受限於在自己的邊界內繪制。若設為false,當子View所佔用的空間大於邊界時可以繪制在邊界外。默認為true。
android:clipToPadding//定義布局間是否有間距。默認為true。
android:descendantFocusability// 定義當尋找一個焦點View的時候,ViewGroup與其子View之間的關系。可選項為:
//(1)beforeDescendants ViewGroup會比其子View更先獲得焦點;
//(2)afterDescendants 只有當無子View想要獲取焦點時,ViewGroup才會獲取焦點;
//(3)blockDescendants ViewGroup會阻止子View獲取焦點
android:layoutAnimation//定義當ViewGroup第一次展開時的動畫效果,也可人為地在第一次展開後調用。
android:persistentDrawingCache// 定義繪圖緩存的持久性。有如下可選項:
//(1)none 當使用過後不保留繪圖緩存
//(2)animation 在layout animation之後保留繪圖緩存
//(3)scrolling 在Scroll操作後保留繪圖緩存
//(4)all always保留繪圖緩存
android:listSelector// 設置選中項顯示的可繪制對象,可以是圖片或者顏色屬性。
android:scrollingCache// 設置在滾動時是否使用繪制緩存。若設為true,則將使滾動表現更快速,但會佔用更內存。默認為true。
android:smoothScrollbar// 為真時,列表會使用更精確的基於條目在屏幕上的可見像素高度的計算方法。默認該屬性為真,如果你的適配器需要繪制可變高的條目,他應該設為假。當該屬性為真時,你在適配器在顯示變高條目時,滾動條的把手會在滾動的過程中改變大小。當設為假時,列表只使用適配器中的條目數和屏幕上的可見條目來決定滾動條的屬性。
android:stackFromBottom// 設置GridView和ListView是否將內容從底部開始顯示。
android:textFilterEnabled// 當設為真時,列表會將結果過濾為用戶類型。前提是這個列表的Adapter必須支持Filterable介面。
android:transcriptMode//設置列表的transcriptMode.有如下選項可選:
//(1)disabled 禁用TranscriptMode,也是默認值;
//(2)normal 當新條目添加進列表中並且已經准備好顯示的時候,列表會自動滑動到底部以顯示最新條目;
//(3)alwaysScroll 列表會自動滑動到底部,無論新條目是否已經准備好顯示.
目前推薦用的是 RecycleView
『貳』 android listView 改變選中行的 背景顏色,字體顏色,和 圖片
這種情況還是用selector吧,把你setTextColor的方法刪掉
修改你的tuijian_building_listview_row的xml文件,最外層background屬性這么設置
java">android:background="@color/list_item_bg_selector"
tvTJCustomName和tvTJCustomPhone的textColor屬性這么設置
android:textColor="@color/text_color_selector"
在res目錄下,新建color子文件夾,在裡面創建list_item_bg_selector
.xml文件和text_color_selector.xml文件,除了顏色值,其他內容一樣(顏色值我隨便寫的,你根據需要的效果自己改)
<?xmlversion="1.0"encoding="utf-8"?>
<selectorxmlns:android="http://schemas.android.com/apk/res/android">
<!--被選中時的顏色-->
<itemandroid:state_selected="true"android:color="#333333"/>
<!--獲得焦點時的顏色-->
<itemandroid:state_focused="true"android:color="#333333"/>
<!--點擊時的顏色-->
<itemandroid:state_pressed="true"android:color="#333333"/>
<!--默認顏色-->
<itemandroid:color="#66666"/>
</selector>
如果要修改背景圖片也大同小異,關於selector的詳細說明請自行網路
『叄』 android中selector怎麼用
Android中的Selector用來改變ListView和Button控制項的默認背景。
其使用方法請參照如下步驟:
一.創建xml文件,位置:drawable/xxx.xml,同目錄下記得要放相關圖片
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默認時的背景圖片-->
<item android:drawable="@drawable/pic1" />
<!-- 沒有焦點時的背景圖片 -->
<item android:state_window_focused="false"
android:drawable="@drawable/pic1" />
<!-- 非觸摸模式下獲得焦點並單擊時的背景圖片 -->
<item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" />
<!-- 觸摸模式下單擊時的背景圖片-->
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" />
<!--選中時的圖片背景-->
<item android:state_selected="true" android:drawable="@drawable/pic4" />
<!--獲得焦點時的圖片背景-->
<item android:state_focused="true" android:drawable="@drawable/pic5" />
</selector>
二.使用xml文件:
1.方法一:在listview中配置android:listSelector="@drawable/xxx
或者在listview的item中添加屬性android:background="@drawable/xxx"
2.方法二:Drawable drawable = getResources().getDrawable(R.drawable.xxx);
ListView.setSelector(drawable);但是這樣會出現列表有時候為黑的情況,需要加上:android:cacheColorHint="@android:color/transparent"使其透明。
相關屬性:
android:state_selected是選中
android:state_focused是獲得焦點
android:state_pressed是點擊
android:state_enabled是設置是否響應事件,指所有事件
根據這些狀態同樣可以設置button的selector效果。也可以設置selector改變button中的文字狀態。
以下是配置button中的文字效果:
drawable/button_font.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#FFF" />
<item android:state_focused="true" android:color="#FFF" />
<item android:state_pressed="true" android:color="#FFF" />
<item android:color="#000" />
</selector>
Button還可以實現更復雜的效果,例如漸變
drawable/button_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> /
<item android:state_pressed="true">//定義當button 處於pressed 狀態時的形態。
<shape>
<gradient android:startColor="#8600ff" />
<stroke android:width="2dp" android:color="#000000" />
<corners android:radius="5dp" />
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp"/>
</shape>
</item>
<item android:state_focused="true">//定義當button獲得 focus時的形態
<shape>
<gradient android:startColor="#eac100"/>
<stroke android:width="2dp" android:color="#333333" color="#ffffff"/>
<corners android:radius="8dp" />
<padding android:left="10dp" android:top="10dp"
android:bottom="10dp" android:right="10dp"/>
</shape>
</item>
</selector>
最後,需要在包含 button的xml文件里添加兩項。例如main.xml 文件,需要在<Button />里加兩項android:focusable="true" android:background="@drawable/button_color"