android GridView控件就像一个九宫格布局,虽然有点类似TableView,但是和android TableView是两个东西,下面将使用GridView来编写一个案例。
1:在activity_main.xml中添加一个GridView控件,用于显示九宫格,代码如下。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" //垂直对齐 tools:context="com.baidu.gridviewdemo.MainActivity"> <GridView android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" //自动填充 android:verticalSpacing="10dp" //垂直间距 android:horizontalSpacing="10dp" //水平间距 android:columnWidth="90dp" //九宫格列宽 android:stretchMode="columnWidth" android:gravity="center" //居中 android:id="@+id/myGridView"/> </LinearLayout>
2:在MainActivity.java中为GridView填充图片,并为每个gridview添加点击事件,弹出当前图片所在的position角标位置,代码如下。
package com.baidu.gridviewdemo; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Integer[] imageIDs = { R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridView gridView = (GridView) findViewById(R.id.myGridView); //将图片设置到GridView九宫格中 gridView.setAdapter(new MyImageAdapter(this)); //给GridView添加点击事件 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(),"你选择了第"+position+"角标处图片", Toast.LENGTH_SHORT).show(); } }); } //实现九宫格view里面的方法 public class MyImageAdapter extends BaseAdapter{ //传入context对象 private Context con; //构造方法 public MyImageAdapter(Context context){ con = context; } @Override public int getCount() { return imageIDs.length; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } //将数组中的图片放置到九宫格view中 @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null){ imageView = new ImageView(con); //imageview的宽度,高度 imageView.setLayoutParams(new GridView.LayoutParams(85,85)); //设置imageview内部边缘左上右下距离 imageView.setPadding(5,5,5,5); }else{ imageView = (ImageView)convertView; } //为imageView设置图片 imageView.setImageResource(imageIDs[position]); return imageView; } } }
3:运行之后看gridview控件的效果,如图。