Android中使用GridView进行应用程序UI布局的教程

0.简介
GridView 和 ListView 有共同的父类:AbsListView,因此 GridView 和 ListView 具有一定 的相似性。GridView与ListView的主要区别在于:ListView只是在一个方向上分布;而 GridView则会在两个方向上分布。
与ListView类似的是,GridView也需要通过Adapter来提供显示的数据:开发者既可通 过SimpleAdapter来为GridView提供数据,也可通过开发 BaseAdaptei的子类来为GridView 提供数据。不管使用哪种方式,GridView与ListView的用法基本是一致的。

1.相关属性:
下面是GridView中的一些属性:
(1)android:columnWidth:设置列的宽度
(2)android:gravity:组件对其方式
(3)android:horizontalSpacing:水平方向每个单元格的间距
(4)android:verticalSpacing:垂直方向每个单元格的间距
(5)android:numColumns:设置列数
(6)android:stretchMode:设置拉伸模式,可选值如下: none:不拉伸;spacingWidth:拉伸元素间的间隔空隙 columnWidth:仅仅拉伸表格元素自身 spacingWidthUniform:既拉元素间距又拉伸他们之间的间隔空袭

2.使用示例:
下面通过一个简单的例子来熟悉这个控件的使用: (这里用的Adapter我们直接用之2.5.0中教大家写的可复用的BaseAdapter~)
实现的效果图:

代码实现:
首先是GridView 的 Item的布局:item_grid_icon.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:padding="5dp">

  <ImageView
    android:id="@+id/img_icon"
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:layout_centerInParent="true"
    android:src="@mipmap/iv_icon_1" />

  <TextView
    android:id="@+id/txt_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/img_icon"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:text="呵呵"
    android:textSize="18sp" />

</RelativeLayout>

接着我们写个entity实体类:Icon.java:

public class Icon {
  private int iId;
  private String iName;

  public Icon() {
  }

  public Icon(int iId, String iName) {
    this.iId = iId;
    this.iName = iName;
  }

  public int getiId() {
    return iId;
  }

  public String getiName() {
    return iName;
  }

  public void setiId(int iId) {
    this.iId = iId;
  }

  public void setiName(String iName) {
    this.iName = iName;
  }
}

最后是MainActivity的布局以及Java代码
activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:padding="5dp"
  tools:context=".MainActivity">

  <!--numColumns设置每行显示多少个-->
  <GridView
    android:id="@+id/grid_photo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="3" />

</RelativeLayout>

MainActivity.java:

public class MainActivity extends AppCompatActivity {

  private Context mContext;
  private GridView grid_photo;
  private BaseAdapter mAdapter = null;
  private ArrayList<Icon> mData = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mContext = MainActivity.this;
    grid_photo = (GridView) findViewById(R.id.grid_photo);

    mData = new ArrayList<Icon>();
    mData.add(new Icon(R.mipmap.iv_icon_1, "图标1"));
    mData.add(new Icon(R.mipmap.iv_icon_2, "图标2"));
    mData.add(new Icon(R.mipmap.iv_icon_3, "图标3"));
    mData.add(new Icon(R.mipmap.iv_icon_4, "图标4"));
    mData.add(new Icon(R.mipmap.iv_icon_5, "图标5"));
    mData.add(new Icon(R.mipmap.iv_icon_6, "图标6"));
    mData.add(new Icon(R.mipmap.iv_icon_7, "图标7"));

    mAdapter = new MyAdapter<Icon>(mData, R.layout.item_grid_icon) {
      @Override
      public void bindView(ViewHolder holder, Icon obj) {
        holder.setImageResource(R.id.img_icon, obj.getiId());
        holder.setText(R.id.txt_icon, obj.getiName());
      }
    };

    grid_photo.setAdapter(mAdapter);

    grid_photo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(mContext, "你点击了~" + position + "~项", Toast.LENGTH_SHORT).show();
      }
    });

  }

}
(0)

相关推荐

  • Android应用开发中使用GridView网格布局的代码示例

    基本布局演示 1. 定义包含GridView 的 main.xmk <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fi

  • Android App中的GridView网格布局使用指南

    零.常用属性 首先我们来看看GridView的一些常用的属性吧 1.android:numColumns="auto_fit" //GridView的列数设置为自动 2.android:columnWidth="90dp " //每列的宽度,也就是Item的宽度 3.android:stretchMode="columnWidth"//缩放与列宽大小同步 4.android:verticalSpacing="10dp" //两

  • Android中GridView布局实现整体居中方法示例

    前言 本文主要给大家介绍了关于Android中GridView布局整体居中的相关内容,是对于自己在项目中遇到问题的一个记录,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 效果图: 示例代码: /** * 对高度和宽度进行统计 然后设置gridView的宽高. * @param numColumns 设定行数 * @param gridView */ public static void calGridViewSumWH(int numColumns ,GridView gri

  • Android中使用GridView进行应用程序UI布局的教程

    0.简介 GridView 和 ListView 有共同的父类:AbsListView,因此 GridView 和 ListView 具有一定 的相似性.GridView与ListView的主要区别在于:ListView只是在一个方向上分布:而 GridView则会在两个方向上分布. 与ListView类似的是,GridView也需要通过Adapter来提供显示的数据:开发者既可通 过SimpleAdapter来为GridView提供数据,也可通过开发 BaseAdaptei的子类来为GridV

  • Android 中启动自己另一个程序的activity如何实现

    Android 中启动自己另一个程序的activity如何实现 可以使用action,举例: 1. 比如建立activity4,我们对它的AndroidManifest.xml修改一下  <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:<a href="http://lib.csdn.net/base/android" rel="external no

  • Android中使用GridView实现仿微信图片上传功能(附源代码)

    由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下面的图片就是点击"加号"后弹出的对话框,通过对话框可以根据自己需求进行相片选择. 项目结构: 下面直接上代码. 整体的布局文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/

  • Android中在GridView网格视图上实现item拖拽交换的方法

    GridView基础 新建一个HelloGridView的工程 修改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=&q

  • Android中检查、设置默认程序详解

    Android作为一个伟大的系统,自然提供了设置默认打开程序的实现.在这篇文章中,我会介绍如何在Android系统中设置默认的程序. 在设置默认程序之前,无非有两种情况,一种是已经有默认的程序,另一种则是没有任何默认程序. 检测是否有默认的程序 检查是必须的,因为结果关乎着我们下一步该怎么做. 复制代码 代码如下: public void testGetDefaultActivity() {     PackageManager pm = mContext.getPackageManager()

  • Android中使用GridView和ImageViewSwitcher实现电子相册简单功能实例

    我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切换照片.如下图的显示效果: 实现Activity之间的跳转以及照片标记位置的传递需要用到intent,并分别使用putExtra以及getExtra,传入和获取照片的标记位置. (关于intent,后期会有专门博文介绍具体使用,请大家持续关注哦) 下面我们开始功能的实现: 第一步:Layout中建立首页GridView布局grid_layout.xml文

  • 微信小程序 UI布局常用技巧整理总结

    微信小程序ui设计规范汇总: 微信小程序是一种全新的应用形态,微信小程序平台不需要下载安装即可使用应用的平台,微信小程序实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用. 也体现了"用完即走"的理念,用户不用关心是否安装太多应用的问题.应用将无处不在,随时可用,但又无需安装卸载. 概要 基于微信小程序轻快的特点,我们拟定了小程序界面设计指南和建议. 设计指南建立在充分尊重用户知情权与操作权的基础之上.旨在微信生态体系内,建立友好.高效.一致的用户体验,

  • Android 利用ViewPager+GridView实现首页导航栏布局分页效果

    最近我尝试使用ViewPager+GridView实现的,看起来一切正常,废话不多说,具体代码如下: 如图是效果图 首先分析下思路 1.首先是怎么布局:整体是一个ViewPager将GridView作为一个View添加到ViewPager的adapter中,下方是圆点 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android中获得正在运行的程序和系统服务的方法

    ActivityManager.RunningAppProcessInfo类与获取正在运行的应用程序 每一个应用程序都会运行在它独立的进程里,但是为了节省资源或者这些应用程序是为了完成某一共同工作,它们 也可能会运行在一个进程里. 知识点介绍: ActivityManager.RunningAppProcessInfo类 说明: 封装了正在运行的进程信息 常用字段: int   pid    进程ID int   uid    进程所在的用户ID String   processName 进程名

  • Android中颜色选择器和改变字体颜色的实例教程

    1.构建一张七彩图: 我们经常看到这种样子的颜色选择器吧.. 然后其实右边的亮度选择是: 这样我们的代码就可以进行啦... // 创建七彩图片 private void init() { int[] oc = { 0xffff0000, 0xffffff00, 0xff00ff00, 0xff00ffff, 0xff0000ff, 0xffff00ff, 0xffff0000 }; float[] op = { 0, 0.16667f, 0.33333f, 0.5f, 0.66667f, 0.8

随机推荐