gridview的監聽,選擇,美化等詳解《一》
工作這麼久以來,都是以解決需求為目標。漸漸發現這種學習方式不好,學到的知識能馬上解決問題,但沒有經過梳理歸納。故想系統總結下一些有趣味的知識點。在這篇部落格中想以乙個例子系統講解下gridview控制項涉及到的方方面面,比如監聽,背景圖的設定等。
1.控制項屬性介紹
android:listselector="@drawable/bg"
//該屬性很重要,如果不設定的話,gridview控制項會自帶自己的選中樣式(黃色邊框),如圖所示:
做專案一般是不需要這個的。所以解決辦法是將gridview的android:listselector屬性設定為和activity背景相同即可。
android:verticalspacing="10dp" //行寬
android:horizontalspacing="10dip" //列寬
android:numcolumns="3" //列數
android:stretchmode="columnwidth" //列可擴充套件
以上列數為3,若想在高解析度中列數設定為4怎麼辦呢。
首先,需要在屬性中設定列為可擴充套件android:stretchmode="columnwidth"。然後在**中做個判斷:
if(metrics.heightpixels == 1280 && metrics.widthpixels == 800)這樣gridview的列數是可以隨解析度不同而做更多的設定。
2.例子一:設定個邊框,並且右上角設定個checkbox來美化選中狀態
(左圖→右圖)。
這個item的xml設計中,我是用兩個imageview控制項來實現的.
第乙個imageview 要設定乙個屬性:android:layout_margin="4dip"。上下左右留出4dip的具體來顯示邊框的效果。並且在相應的adapter中做個判斷,選中的話背景顏色為#87cefa,未選中時為3ffffff:
if(bselect)elseelse
很簡單吧。你們可以試試。
3.例子二:開啟乙個gridview控制項的activity時,如果開啟的過多,如何讓非同步載入
。如圖所示:
首先在介面定義中要定義乙個全屏顯示的載入圈效果,叫做mloading。程式剛啟動時顯示載入結束後呼叫函式mloading.setvisibility(view.gone);讓它不顯示。我是用乙個函式來呼叫它,這樣更好的體現了封裝性,如下:
private void showloading(boolean bshow)
xml中該載入框的設計如下:
view code
①為了不卡主線程,實現這一的效果要多開乙個執行緒。在該執行緒中呼叫函式initlist(),在該函式中將載入到arraylist中去(花時間最多的就是對多的處理,這個放在子執行緒中可以不卡主線程,如果直接在主線程中做,會讓畫面出現2-3秒的黑屏停頓)。
像這樣,在oncreate方法中開乙個子執行緒:
new thread(new runnable()
}).start();
②方法initlist()中要做兩件事情。一是載入,二是通知handler載入完成(因為子執行緒不可以操作ui控制項,只能通過handler的方式)。
private void initlist()
③當收到initlist傳送的訊息時就讓上面所提的mloading不顯示。同時gridview繫結adapter的**也在這個裡面寫。因為載入完成後再繫結adapter,這樣才能全部顯示,否則只能顯示一部分。
case msg_finish:
showloading(false); //讓載入框不再顯示
gridview.setadapter(ia); //繫結資料
break;
default:
break;
-carman
-2012.5.29 2:01
GRIDVIEW多行選擇
1 頁面 給gridview新增templatefield 在templatefield 下新增 checkboxlist 選他的原因是他有 autopostback回送事件,當選擇的時候可以發出回送,從而改變背景顏色,或者其它自定義函式,在次的函式是checkboxlist1 textchange...
JTree的節點式樣美化實現滑鼠事件監聽
想要實現jtree節點的式樣自定義,首先要繼承defaulttreecellrenderer類,defaulttreecellrenderer類是每個節點的父類。public class treecell extends defaulttreecellrenderer 繪製每個節點的式樣 overr...
gridview中cell的選擇和編輯
aspx中定義乙個js函式 其中aspx中form名稱為 myform 新增三個隱藏域 protected void gridview1 rowdatabound object sender,gridviewroweventargs e e.row.rowindex,i 在aspx.cs 中定義gr...