Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android_GridView_GridView概述及實現水平滑動

Android_GridView_GridView概述及實現水平滑動

編輯:關於Android編程

1.GridView簡介 GridView是ViewGroup子類,主要用於顯示在一個二維可滾動的網格,比如九宮格。使用gridview和listview類似,都是使用ListAdapter來填充數據加載布局。 2.XML Attributes (1).android:columnWidth 主要用來指定每一列的寬度,使用該屬性時應該注意和後面的拉伸模式相關聯。如果拉伸模式為spacingWidth,則該屬性必須指定;如果拉伸模式為columnWidth指定該屬性無效。 (2).android:gravity 用於指定每個item的對其方式起始位置,當有多個是可以使用'|'隔開 (3).android:horizontalSpacing 用於指定每一列的之間的間距。注意:如果拉伸模式為spacingWidth,則該值設定無效 (4).android:numColumns 每一列的item數目 (5).android:verticalSpacing 用於指定每一行的之間的間距。 (6).android:stretchMode(***) 如果以列間距拉伸,則不需要指定列之間的間距;如果以列的等寬度拉伸,則不需要指定列的寬度。 常量 值 描述 none 0 拉伸被禁用,不可以被拉伸 spacingWidth 1 每一列之間的間距會被拉伸,因此使用該拉伸模式時,必須指定columnWidth,而指定horizontalSpacing就會無效,即不需要先考慮horizontalSpacing columnWidth 2 每一列是等寬度,只需要指定numColumns和horizontalSpacing,即先指定columnWidth就是無效的 spacingWidthUniform 3 每一列的間距均勻拉伸。拉伸被禁用,不可以被拉伸 3.GridView水平滾動  
private GridView gridView;  
private float density;  
  
private int listSize = 10;  
  
@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
  
    gridView = (GridView) findViewById(R.id.gridView1);  
    gridView.setAdapter(new MyAdapter());  
  
      
    // 得到像素密度  
    DisplayMetrics outMetrics = new DisplayMetrics();  
    getWindowManager().getDefaultDisplay().getMetrics(outMetrics);  
    density = outMetrics.density; // 像素密度  
  
    // 根據item的數目,動態設定gridview的寬度,現假定每個item的寬度和高度均為100dp,列間距為5dp  
    ViewGroup.LayoutParams params = gridView.getLayoutParams();  
    int itemWidth = (int) (100 * density);  
    int spacingWidth = (int) (5*density);  
      
    params.width = itemWidth*listSize+(listSize-1)*spacingWidth;  
    gridView.setStretchMode(GridView.NO_STRETCH); // 設置為禁止拉伸模式  
    gridView.setNumColumns(listSize);  
    gridView.setHorizontalSpacing(spacingWidth);  
    gridView.setColumnWidth(itemWidth);  
    gridView.setLayoutParams(params);  
  
    /* 
     * 使用這種方式也有很大的弊端,由於動態指定了gridview的寬度,導致了gridview的所有item,getView()都會被調用, 
     * 如果item很大時,就不能使用這種方式了~~~ 
     */  
    gridView.setOnItemClickListener(new OnItemClickListener() {  
        @Override  
        public void onItemClick(AdapterView<?> parent, View view,  
                int position, long id) {  
            System.out.println(position);  
        }  
    });  
}  

 

   
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent" >  
  
    <HorizontalScrollView  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:scrollbars="none" >  
  
        <LinearLayout  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:orientation="horizontal" >  
  
            <GridView  
                android:id="@+id/gridView1"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content" >  
            </GridView>  
        </LinearLayout>  
    </HorizontalScrollView>  
  
</RelativeLayout>  

 

   
<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:background="@android:color/holo_green_light"  
    android:gravity="center"  
    android:orientation="vertical" >  
  
    <ImageView  
        android:id="@+id/imageView1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:src="@drawable/main_item_ad" />  
  
</LinearLayout>  

 

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved