今天,需要做一個及時通訊的lsitView.原本以爲 找一個ListVIew 直接就解決了。可是並不是那麼簡單.
1.當數據量少的時候 數據在listView的頂部、
2.當數據量多的時候 只顯示 listView底部的數據,
3,數據刷新的時候, 數據在listView也需要 刷新
1 2 的解決方案:
android:transcriptMode="alwaysScroll"
android:stackFromBottom="false"
<ListView
android:id="@+id/lv_convers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:dividerHeight="0dp"
android:divider="#00000000"
android:scrollbarStyle="outsideOverlay"
android:transcriptMode="alwaysScroll"
android:stackFromBottom="false"
>
</ListView>
3 很簡單 就設置選中最後一條數據!
---------------------------------------------------------------------------------------
增強: 用上面的方案 可以實現,但是有個問題, 在listVIew 刷新出最新的數據的時候,listview 由於設置的模式 transcriptMode = "alwaysScroll" 老是滑動到最底部。顯然用戶的體驗度 很差。
解決方案: 黃金法則: android:transcriptMode="normal" 一直顯示在頂部,我們需要處理的是,進入listView 的時候 設置選中最後一條數據, 這樣就實現了QQ 最新的數據在最下面的功能。 然後在發送數據的時候,adpter添加數據的時候,講數據 添加在最後面。 選中最後一條數據。
adapter.add(msgBean);
lv_convers.setSelection(adapter.getCount());
listView 重要的屬性:
由於這兩天在做listView的東西,所以整理出來一些我個人認爲比較特別的屬性,通過設置這樣的屬性可以做出更加美觀的列表
首先是stackFromBottom屬性,這隻該屬性之後你做好的列表就會顯示你列表的最下面,值爲true和false
android:stackFromBottom="true"
第二是transciptMode屬性,需要用ListView或者其它顯示大量Items的控件實時跟蹤或者查看信息,並且希望最新的條目可以自動滾動到可視範圍內。通過設置的控件transcriptMode屬性可以將Android平臺的控件(支持ScrollBar)自動滑動到最底部。
android:transcriptMode="alwaysScroll"
第三cacheColorHint屬性,很多人希望能夠改變一下它的背景,使他能夠符合整體的UI設計,改變背景背很簡單只需要準備一張圖片然後指定屬性 android:background="@drawable/bg",不過不要高興地太早,當你這麼做以後,發現背景是變了,但是當你拖動,或者點擊list空白位置的時候發現ListItem都變成黑色的了,破壞了整體效果。
如果你只是換背景的顏色的話,可以直接指定android:cacheColorHint爲你所要的顏色,如果你是用圖片做背景的話,那也只要將android:cacheColorHint指定爲透明(#00000000)就可以了
第四divider屬性,該屬性作用是每一項之間需要設置一個圖片做爲間隔,或是去掉item之間的分割線
android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一個圖片資源,如果不想顯示分割線則只要設置爲android:divider="@drawable/@null" 就可以了
第五fadingEdge屬性,上邊和下邊有黑色的陰影
android:fadingEdge="none" 設置後沒有陰影了~
第六scrollbars屬性,作用是隱藏listView的滾動條,
android:scrollbars="none"與setVerticalScrollBarEnabled(true);的效果是一樣的,不活動的時候隱藏,活動的時候也隱藏
第七fadeScrollbars屬性,android:fadeScrollbars="true" 配置ListView佈局的時候,設置這個屬性爲true就可以實現滾動條的自動隱藏和顯示。
第八fastScrollEnabled屬性 ,
很多開發者不知道ListView列表控件的快速滾動滑塊是如何啓用的,這裏Android開發網告訴大家,輔助滾動滑塊只需要一行代碼就可以搞定,如果你使用XML佈局只需要在ListView節點中加入 android:fastScrollEnabled="true" 這個屬性即可,而對於Java代碼可以通過myListView.setFastScrollEnabled(true); 來控制啓用,參數false爲隱藏。 還有一點就是當你的滾動內容較小,不到當前ListView的3個屏幕高度時則不會出現這個快速滾動滑塊,同時該方法仍然是AbsListView的基礎方法,可以在ListView或GridView等子類中使用快速滾動輔助。
第九drawSelectorOnTop屬性
When set to true, the selector will be drawn over the selecteditem. Otherwise the selector is drawn behind the selected item. Thedefault value is false.
android:drawSelectorOnTop="true" 點擊某一條記錄,顏色會顯示在最上面,記錄上的文字被遮住,所以點擊文字不放,文字就看不到
android:drawSelectorOnTop="false"點擊某條記錄不放,顏色會在記錄的後面,成爲背景色,但是記錄內容的文字是可見的