Android GridView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android GridView相关的知识,希望对你有一定的参考价值。

GridView网格视图

 

GridView网格视图是按照行,列分布的方式来显示多个组件,通常用于显示图片或是图标等,在使
用网格视图时,首先需要要在屏幕上添加GridView组件。

 

常用属性:
  1. android:columnWidth 用于设置列的宽度
  2. android:gravity 用于设置对齐方式
  3. android:horizontalSpacing 用于设置各元素之间的水平间距
  4. android:numColumns 用于设置列数
  5. android:stretchMode 用于设置拉伸模式,其中属性值可以是
       //none(不拉伸),
       //spacingWidth(仅拉伸元素之间的间距),
       //columnWidth(仅拉伸表格元素本身)或
       //spacingWidthUniform(表格元素本身,元素之间的间距一起拉伸)
  6. android:verticalSpacing 用于设置各元素之间的垂直间距

 

GridView与ListView类似,都需要通过Adapter来提供显示的数据.但是,ListView可以通过
android:entries来提供资源文件的数据源,GridView没有这些属性,所以必须通过适配器来为其
添加数据。

 

GridView的事件和ListView一样,都是设置

    setOnItemClickListener(OnItemClickListener listener);

 

技术分享

 

 

技术分享
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <GridView
 8         android:id="@+id/gv"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:layout_alignParentTop="true"
12         android:layout_margin="30dp"
13         android:numColumns="4"
14         android:stretchMode="columnWidth" />
15 
16     <ImageView
17         android:id="@+id/img_large"
18         android:layout_width="wrap_content"
19         android:layout_height="wrap_content"
20         android:layout_alignLeft="@id/gv"
21         android:layout_alignRight="@id/gv"
22         android:layout_below="@id/gv"
23         android:layout_margin="20dp"
24         android:layout_centerHorizontal="true"
25         android:adjustViewBounds="true"
26         android:scaleType="fitXY"
27         android:src="@drawable/img01" />
28 
29 </RelativeLayout>
activity_main.xml

 

技术分享
 1 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="match_parent"
 3     android:layout_height="match_parent" >
 4 
 5     <ImageView
 6         android:id="@+id/img"
 7         android:layout_width="wrap_content"
 8         android:layout_margin="20dp"
 9         android:layout_height="wrap_content" 
10         android:src="@drawable/ic_launcher"/>
11 
12 </GridLayout>
item_layout.xml

 

技术分享
 1 public class MainActivity extends Activity {
 2 
 3     int[] imgs = new int[12];
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9 
10         initData();
11         GridView gv = (GridView) findViewById(R.id.gv);
12         final ImageView iv = (ImageView) findViewById(R.id.img_large);
13 
14         List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
15         for (int i = 0; i < 12; i++) {
16             HashMap<String, Object> map = new HashMap<String, Object>();
17             map.put("img", imgs[i]);
18             data.add(map);
19         }
20 
21         SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, data,
22                 R.layout.item_layout, new String[] { "img" },
23                 new int[] { R.id.img });
24         gv.setAdapter(adapter);
25         
26         gv.setOnItemClickListener(new OnItemClickListener() {
27 
28             @Override
29             public void onItemClick(AdapterView<?> parent, View view,
30                     int position, long id) {
31                 iv.setImageResource(imgs[position]);
32             }
33         });
34         
35         
36     }
37 
38     private void initData() {
39         //初始化数据
40         
41         for (int i = 0; i < imgs.length; i++) {
42             int imgI = i + 1;
43             // 获取其他类的属性,通过属性获取属性对应得值
44             // null代表的是静态变量,非静态变量需要传递对象
45             try {
46                 imgs[i] = R.drawable.class.getField("img0" + imgI).getInt(null);
47 
48             } catch (Exception e) {
49                 e.printStackTrace();
50             }
51         }
52     }
53 
54 }
MainActivity

 

以上是关于Android GridView的主要内容,如果未能解决你的问题,请参考以下文章

Android:MainActivity/Fragment 中的 ListView / GridView 重叠工具栏

如何从片段中检索gridview中的图像?

Android drawSelectorOnTop 与 GridView

Android ImageAdapter 与 Fragment 中的 Gridview

在android studio中升级repo v9后,片段必须是公共静态类崩溃错误

GridView - 片段 - LongClick