GridView的監聽,選擇,美化等詳解《一》

2021-06-16 23:10:49 字數 2263 閱讀 5470

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...