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="https://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="https://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>