额外新建一个layout,用来布局ImageView组件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="100dp" android:layout_height="75dp" android:id="@+id/imageView" /> </LinearLayout>
网格视图的布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3"> </GridView> </RelativeLayout>
java的调用,使用了适配器SimpleAdapter,将ImageView通过适配器交给GridView
package com.example.myhighuiiii; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.GridView; import android.widget.ImageView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private int[] picture = new int[]{ R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d }; ImageView imageView = null; GridView gridView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView = (GridView) findViewById(R.id.gridView); //用一个List来存图片对象 List<Map<String,Object>> listItem = new ArrayList<Map<String, Object>>(); //把map对象添加到list中 for(int i=0;i<picture.length;i++){ Map<String,Object> map = new HashMap<String,Object>(); map.put("image",picture[i]); listItem.add(map); } //创建simpleAdapter对象 SimpleAdapter simpleAdapter = new SimpleAdapter(//构造器总共有五个参数 this,listItem,R.layout.celi,new String[]{"image"},new int[]{R.id.imageView}); //为网格视图设置适配器 gridView.setAdapter(simpleAdapter); } }
自定义适配器使用
layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="auto_fit" android:gravity="center" android:verticalSpacing="5dp" android:columnWidth="100dp" /> </LinearLayout>
java调用代码
package com.example.myhighuiiii; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.content.Context; import android.media.Image; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridLayout; import android.widget.GridView; import android.widget.ImageView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends Activity { private int[] picture = new int[]{ R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d }; ImageView imageView = null; GridView gridView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //为网格视图设置适配器 gridView = findViewById(R.id.gridView); gridView.setAdapter(new ImageAdpater(MainActivity.this)); } //自定义适配器 public class ImageAdpater extends BaseAdapter{ private Context mContext; public ImageAdpater(Context context){ mContext = context; } @Override//返回图片数组长度 public int getCount() { return picture.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } //创建一个新的ImageView,用来显示图片,并且将这个图片 //通过适配器加载到新的ImageView中 @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = null; if(convertView==null){ //如果传过来的值为空,新建一个 imageView = new ImageView(mContext); //设置宽和高 imageView.setLayoutParams(new GridView.LayoutParams(100,90)); //设置拉伸方式:保持纵横比 imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); } else { //将传过来的值赋给ImageView即可 imageView = (ImageView) convertView; } //设置图片资源 imageView.setImageResource(picture[position]); return imageView; } } }