Welcome 微信登录

首页 / 操作系统 / Linux / Android开发:GridView常用技巧

GridView 是 AdapterView 的派生类, AdapterView 是 ViewGroup 的派生类, ViewGroup 是 View 的派生类。 什么是 GridView ?官方的说法是: A view that shows items in two-dimensional scrolling grid. The items in the grid come from the ListAdapter associated with this view 这句话包含以下几个意思: +      GridView 是一个二维可滚动的网格视图 +       GridView 中的数据是有与之关联的 ListAdapter 提供的 下面就一个具体的例子来说明 GridView 的用法。 1.     创建一个项目,修改 main.xml 使之如下: <? xml version = "1.0" encoding = "utf-8" ?>   < GridView xmlns:Android = "http://schemas.android.com/apk/res/android"            android:id = "@+id/gridview"            android:layout_width = "fill_parent"            android:layout_height = "fill_parent"            android:background = "#333"            android:columnWidth = "90px"            android:numColumns = "auto_fit"            android:horizontalSpacing = "6px"            android:verticalSpacing = "6px"            android:stretchMode = "columnWidth"            android:gravity = "center" >            <!--            android:columnWidth                 Set the width of columns in the grid.            android:numColumns                Set the number of columns in the grid.            android:stretchMode                   Control how items are stretched to fill their space.            --> </ GridView >   2.     将相关的图片拖入 res/drawable-mdpi 文件夹中:        以上各图对应的文件名分别为: .aa.png, al.png, ar.png. au.png, cf.png, cn .png, dm .png, eu .png, fa .png, gr .png, hk .png, in .png, ma .png, pk .png, ru .png, sk .png, uk .png, us .png,
 3.     自定义 Adapter ,使之如下: package com.pat.gui;   import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView;   public class ImageAdapter extends BaseAdapter {          private Context ctx;          private int[] images =          {                    R.drawable.aa,          // Austria                    R.drawable.al,           // Algeria                    R.drawable.ar,           // Argentina                    R.drawable.au,          // Austrilia                    R.drawable.cf,           // Swizterland                    R.drawable.cn,          // China                    R.drawable.dm,         // Denmark                    R.drawable.eu,          // European Union                    R.drawable.fa,           // France                    R.drawable.gr,           // Greece                    R.drawable.hk,          // Hong Kong                    R.drawable.in,           // India                    R.drawable.ma,         // Macau                    R.drawable.pk,          // Pakistan                    R.drawable.ru,           // Russia                    R.drawable.sk,           // South Korea                    R.drawable.uk,          // United Kingdom                    R.drawable.us           // United States          };                   public ImageAdapter(Context ctx)          {                    this.ctx = ctx;          }                   //@Override          public int getCount()          {                    return images.length;          }            //@Override          public Object getItem(int position)          {                    return images[position];          }            //@Override          public long getItemId(int position)          {                    return images[position];          }            //@Override          public View getView(int position, View convertView, ViewGroup parent)          {                    ImageView view = (ImageView)convertView;                    if(view == null)                    {                             view = new ImageView(ctx);                    }                                       view.setLayoutParams(new GridView.LayoutParams(90, 90));                    view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);                    view.setPadding(1, 1, 1, 1);                    view.setImageResource(images[position]);                                       return view;          }   }   4.     修改 Activity 所对应的代码,使之如下: package com.pat.gui;   import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener;   public class ControlGridView extends Activity implements OnItemClickListener {          private GridView gridview;          private ImageAdapter adapter;              @Override     public void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                 gridview = (GridView)findViewById(R.id.gridview);         adapter = new ImageAdapter(this);         gridview.setAdapter(adapter);         gridview.setOnItemClickListener(this);     }            //@Override          public void onItemClick(AdapterView<?> parent, View view, int position, long id)          {                    Toast.makeText(this, "" + position, Toast.LENGTH_SHORT).show();          } }   输出结果:
点击中国,得到:
  5.     如果想实现下面这样的效果: