Android API 中文 (10) —— GridView

正文

  一、結構

    public final class GridView extends AbsListView

 

    java.lang.Object 
      android.view.View 
        android.view.ViewGroup 
          android.widget.AdapterView<T extends android.widget.Adapter> 
            android.widget.AbsListView 
              android.widget.GridView

 

  二、類概述

    一個在平面上可顯示多個條目的可滾動的視圖組件,該組件中的條目通過一個ListAdapter和該組件進行關聯。比如android手機中顯示的應用:


      比如實現九宮格圖,用GridView是首選,也是最簡單的。

  三、構造函數

    public GridView (Context context) 
    創建一個默認屬性的GridView實例

    public GridView (Context context, AttributeSet attrs)

    創建一個帶有attrs屬性的GridView實例

    public GridView (Context context, AttributeSet attrs, int defStyle)

    創建一個帶有attrs屬性,並且指定其默認樣式的GridView實例

 

  四、XML屬性

 

五、公共方法

 

         public ListAdapter getAdapter ()

   獲得與此組件相關的適配器..

返回值

    ListAdapter適配器實例

        

         public int getStretchMode ()

  獲得GridView的縮放模式..

 

         public boolean onKeyDown (int keyCode, KeyEvent event)

  默認由KeyEvent.Callback.onKeyMultiple()實現,如果視圖是可用的並且是可點擊的,那麼傳入 KEYCODE_DPAD_CENTERKEYCODE_ENTER值是執行的是按下視圖操作。

       參數

              keyCode 一個表示按下操作的鍵值.

event 表示按鈕事件的對象

                  返回值

如果你認爲已經完成事件處理,不想讓讓下一個處理器來處理此事件,則返回true,否則返回false

 

         public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)

   默認由KeyEvent.Callback.onKeyMultiple()實現,總是返回false(不處理此事件)。

         參數

                   keyCode 鍵值.

repeatCount 該動作發生的次數.

event 事件對象

                  返回值

如果你認爲已經完成事件處理,不想讓讓下一個處理器來處理此事件,則返回true,否則返回false

 

         public boolean onKeyUp (int keyCode, KeyEvent event)

   默認由KeyEvent.Callback.onKeyMultiple()實現,如果視圖是可用的並且是可點擊的,那麼傳入KEYCODE_DPAD_CENTERKEYCODE_ENTER值是執行的是點擊視圖操作。

參數

              keyCode 鍵值.

event 事件對象.

                  返回值

如果你認爲已經完成事件處理,不想讓讓下一個處理器來處理此事件,則返回true,否則返回false

 

         public void setAdapter (ListAdapter adapter)

   設置GridView的數據。

                  參數

                            adapter grid提供數據的適配器 

 

         public void setColumnWidth (int columnWidth)

   設置GridView的列寬.

                  參數

                            columnWidth 列的寬度,以像素爲單位

 

         public void setGravity (int gravity)

   設置控件內容的位置,默認值爲:Gravity.LEFT.

                  參數

                            gravity 位置值

 

         public void setHorizontalSpacing (int horizontalSpacing)

   設置列間距.

                  參數

                            horizontalSpacing 列間距值

 

public void setNumColumns (int numColumns)

        設置grid的列數

 

參數

numColumns 列數值.

 

public void setSelection (int position)

        設置選中的條目.

 

參數

position . 數據條目在列表中的索引值(從0開始),如果在可觸摸的模式下,在該索引值下的條目將不會被選中,但是該索引值仍然指向該條目。

 

public void setStretchMode (int stretchMode)

設置grid中的條目以什麼縮放模式去填充空間。.

 

參數

stretchMode 可選值:NO_STRETCHSTRETCH_SPACINGSTRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH

 

public void setVerticalSpacing (int verticalSpacing)

設置行間距.

   參數

      verticalSpacing 間距值,以像素爲單位 

 

 

  六、代碼示例

    下面給出一個小例子先看效果: 

 

a).  GridView01.java

複製代碼
public class GridView01 extends Activity {
    
private GridView gridview;
    @Override
    
protected void onCreate(Bundle savedInstanceState) {
        
// TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridview);
        
//準備要添加的數據條目
        List<Map<String, Object>> items = new ArrayList<Map<String,Object>>();
        
for (int i = 0; i < 10; i++) {
            Map
<String, Object> item = new HashMap<String, Object>();
            item.put(
"imageItem", R.drawable.icon);
            item.put(
"textItem""text" + i);
            items.add(item);
        }
//實例化一個適配器
        SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.grid_item, new String[]{"imageItem""textItem"}, new int[]{R.id.image_item, R.id.text_item});
        
//獲得GridView實例
        gridview = (GridView)findViewById(R.id.mygridview);
        
//gridview.setNumColumns(3);//可以在xml中設置
        
//gridview.setGravity(Gravity.CENTER);//同上
//將GridView和數據適配器關聯
        gridview.setAdapter(adapter);
    }
}
複製代碼

 

    b).  gridview.xml

複製代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
="wrap_content"
    android:layout_height
="wrap_content">
    
<GridView android:id="@+id/mygridview"
        android:numColumns
="3"
        android:gravity
="center_horizontal"
        android:layout_width
="wrap_content"
        android:layout_height
="wrap_content">
    
</GridView>
</LinearLayout>
複製代碼

    c).  grid_item.xml

複製代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    android:layout_width
="fill_parent" android:layout_height="fill_parent"
    xmlns:android
="http://schemas.android.com/apk/res/android">
    
<ImageView android:id="@+id/image_item"
        android:layout_width
="wrap_content"
        android:layout_height
="wrap_content">
    
</ImageView>
    
<TextView android:id="@+id/text_item"
        android:layout_below
="@+id/image_item"
        android:layout_height
="wrap_content"
        android:layout_width
="wrap_content">
    
</TextView>
</RelativeLayout>

發佈了19 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章