android Gridview中文API

轉自:農民伯伯
一、結構
    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屬性
屬性名稱
描述
android:columnWidth
設置列的寬度。關聯的方法為:setColumnWidth(int)
android:gravity
設置此組件中的內容在組件中的位置。可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多選,用“|”分開。關聯方法:setGravity (int gravity)
android:horizontalSpacing
兩列之間的間距。關聯方法:setHorizontalSpacing(int)
android:numColumns
列數。關聯方法:setNumColumns(int)
android:stretchMode
縮放模式。關聯方法:setStretchMode(int)
android:verticalSpacing
兩行之間的間距。關聯方法:setVerticalSpacing(int)
 
  五、公共方法
 
         public ListAdapter getAdapter ()
   獲得與此組件相關的適配器..
返回值
    ListAdapter適配器實例
       
         public int getStretchMode ()
  獲得GridView的縮放模式..
 
         public boolean onKeyDown (int keyCode, KeyEvent event)
  默認由KeyEvent.Callback.onKeyMultiple()實現,如果視圖是可用的並且是可點擊的,那麼傳入 KEYCODE_DPAD_CENTER或KEYCODE_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_CENTER或KEYCODE_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_STRETCH,STRETCH_SPACING,STRETCH_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>

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *