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控件的效果,如图。
