我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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:class="lazy" data-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();
      }
    });
  }
}
您可能感兴趣的文章:Android中使用GridLayout网格布局来制作简单的计算器AppAndroid布局之GridLayout网格布局Android RecyclerView使用GridLayoutManager间距设置的方法Android使用GridLayout绘制自定义日历控件Android自定义ViewGroup之CustomGridLayout(一)Android中RecyclerView布局代替GridView实现类似支付宝的界面Android网格布局GridView实现漂亮的多选效果Android App中的GridView网格布局使用指南Android应用开发中使用GridView网格布局的代码示例Android开发之计算器GridLayout布局实现方法示例


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

0.简介 GridView 和 ListView 有共同的父类:AbsListView,因此 GridView 和 ListView 具有一定 的相似性。GridView与ListView的主要区别在于:ListView只是在一个方向上分布
2022-06-06

HTML教程:如何使用Grid布局进行自适应布局

在现代的网页设计中,自适应布局是至关重要的,因为它可以确保网页在不同设备和屏幕尺寸上都能展示出最佳的效果。而CSS Grid布局则是一种强大的工具,可以实现灵活且响应式的布局效果。本文将介绍如何使用Grid布局进行自适应布局,同时提供具体的
2023-10-21

HTML教程:如何使用Grid布局进行自适应网格布局

HTML教程: 如何使用Grid布局进行自适应网格布局在前端开发中,网页布局是一个重要的环节。而在现代的网页布局中,Grid布局已经成为了一种非常流行的选择。它可以帮助我们快速、灵活地构建各种网格布局,并且能够实现自适应的效果。本篇文章将介
2023-10-27

HTML教程:如何使用Grid布局进行栅格自适应布局

引言:在现代Web设计中,页面布局的自适应性是一个重要的考虑因素。传统的布局方法(如浮动和定位)虽然可以实现一定程度的自适应,但往往需要大量的代码和调整。而CSS Grid布局提供了一种简单而强大的方式来实现栅格自适应布局。本教程将详细介绍
2023-10-21

HTML教程:如何使用Grid布局进行页面布局

从过去的表格布局到现在的Flex布局,CSS在页面布局方面一直发展和进化。而现在,CSS Grid布局成为了一种强大且灵活的布局方法。在本教程中,我们将学习如何使用CSS Grid布局来创建复杂且漂亮的页面布局。CSS Grid布局是一个二
2023-10-21

HTML教程:如何使用Grid布局进行自由布局

在Web开发中,布局是一个必不可少的部分。而相比于过去繁琐的布局方式,CSS Grid布局提供了一种更加灵活和直观的布局方式。本教程将介绍如何使用Grid布局进行自由布局,通过具体的代码示例来让大家更好地理解和掌握。一、Grid布局简介CS
2023-10-21

HTML教程:如何使用Grid布局进行多栏布局

HTML教程:如何使用Grid布局进行多栏布局Grid布局是现代Web设计中常用的布局方法之一,它能够将网页内容分割成多个列和行,实现灵活的多栏布局。本篇文章将介绍如何使用Grid布局来创建多栏网页布局,并提供具体的代码示例。一、Grid布
2023-10-25

HTML教程:如何使用Grid布局进行网格布局

引言:在现代的网页设计中,网格布局是一种非常流行和实用的布局方式。它能够帮助开发者更加灵活地控制网页的布局和排版,使得网页呈现出更加美观和易读的效果。本文将向大家介绍如何使用HTML中的Grid布局进行网格布局,并提供具体的代码示例,帮助读
2023-10-21

HTML教程:如何使用Grid布局进行自适应网格项布局

在现代的网页设计中,自适应布局是至关重要的。通过自适应布局,网页可以在不同的设备和屏幕上呈现出最佳的显示效果,提供更好的用户体验。在这方面,CSS Grid布局是一种强大的工具,可以帮助我们实现网页布局的自适应性。本文将介绍如何使用Grid
2023-10-21

HTML教程:如何使用Grid布局进行自动布局

在网页设计中,页面布局起着至关重要的作用。好的布局能够使网页看起来整洁美观,提升用户体验。而在过去,我们通常使用传统的浮动布局或者弹性布局来实现页面布局,但随着技术的发展,新的布局方式也应运而生。其中,Grid布局是一种强大而灵活的布局方式
2023-10-21

HTML教程:如何使用Grid布局进行栅格自动适应布局

HTML教程:如何使用Grid布局进行栅格自动适应布局在现代网页设计中,栅格布局(Grid Layout)成为了一种流行的布局方式。它可以让网页的元素在网格系统中进行自动适应布局,使得页面在不同屏幕尺寸上都能够展现出良好的排版效果。在本篇文
2023-10-27

HTML教程:如何使用Grid布局进行网格项布局

HTML教程:如何使用Grid布局进行网格项布局Grid布局是一种强大的CSS网格系统,可以轻松地实现复杂的网格布局。通过将网格划分为行和列,我们可以方便地控制网格项的位置和大小。本教程将介绍如何使用Grid布局进行网格项布局,同时提供具体
2023-10-27

HTML教程:如何使用Grid布局进行栅格自适应网格布局

HTML教程:如何使用Grid布局进行栅格自适应网格布局,需要具体代码示例引言:随着互联网的发展,网页布局变得越来越重要。传统的网页布局方法,如使用表格或浮动布局,往往需要大量的代码和调整来实现自适应的效果。而CSS3中引入的Grid布局则
2023-10-27

HTML教程:如何使用Grid布局进行自适应网格自动布局

HTML教程:如何使用Grid布局进行自适应网格自动布局,需要具体代码示例导语在Web开发中,网格布局(Grid layout)是一种更为灵活和强大的布局系统。它允许开发者将页面划分为网格单元,并通过定义行列的数量和大小来控制元素在这些单元
2023-10-26

HTML教程:如何使用Flexbox进行等高响应式布局

引言:在现代Web开发中,响应式布局是一个非常重要的概念。随着移动设备的广泛使用,我们的网页需要能够适应不同屏幕尺寸,并且保持良好的用户体验。Flexbox布局是CSS中的一个强大工具,可以用来实现等高响应式布局。本教程将为您介绍如何使用F
2023-10-21

HTML教程:如何使用Flexbox进行自适应等高布局

引言:在网页设计与开发中,实现自适应等高布局是一项常见的需求。传统的CSS布局方法往往在处理等高布局时面临一些困难,而Flexbox布局则为我们提供了一种简单且强大的解决方案。本文将介绍Flexbox布局的基本概念和常见用法,并给出具体的代
2023-10-21

HTML教程:如何使用Grid布局进行栅格网格布局

网页布局是网页设计的重要组成部分,合理的网页布局可以提升用户的浏览体验。而Grid布局是现代网页布局中非常重要的一种技术,它可以帮助我们轻松地实现栅格网格布局。在本文中,我们将学习如何使用HTML和CSS的Grid布局来创建栅格网格布局,并
2023-10-21

HTML教程:如何使用Grid布局进行栅格自由布局

引言:在Web开发中,使用CSS进行布局是非常重要的一项技能。而Grid布局是CSS3的一项新特性,它提供了更强大、灵活的布局方式,能够让我们更加自由地设计网页的栅格布局。本篇文章将介绍Grid布局的使用方法,并提供具体的代码示例。什么是G
2023-10-21

HTML教程:如何使用Grid布局进行栅格均分布局

引言:在网页设计和开发中,布局是一个非常重要的环节。而栅格布局是一种常见且实用的布局方式之一。本文将介绍如何使用Grid布局来实现栅格均分布局,同时提供一些具体的代码示例供参考。一、什么是Grid布局Grid布局是一种CSS属性布局,用于创
2023-10-21

HTML教程:如何使用Grid布局进行栅格平均布局

在网页设计中,栅格布局(Grid Layout)是一种常用的布局方式,它可以有效地将网页内容划分为多个栏目,并进行灵活的排列和布局。本教程将介绍如何使用HTML和CSS的Grid布局来实现栅格平均布局,并提供具体的代码示例。一、什么是栅格布
2023-10-21

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录