【Android】使用v7.widget.GridLayout做九宫格。

2023-11-06

布局文件

如果使用xml配置平分,那么配置大致如下:
app:layout_rowWeight 垂直方向权重
app:layout_columnWeight 水平方向权重
app前缀是说明要使用v7所指定的属性,为了兼容。

<ImageView
    android:layout_width="0dp"
    android:layout_height="64dp"
    android:layout_margin="4dp"
    android:scaleType="centerCrop"
    android:src="@mipmap/demo_01"
    app:layout_columnWeight="1" />
<?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:id="@+id/iRecyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:ignore="MissingPrefix">

    <android.support.v7.widget.GridLayout
        android:id="@+id/gv_pics"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        app:columnCount="3"
        app:orientation="horizontal"
        app:rowCount="3">

    </android.support.v7.widget.GridLayout>
</RelativeLayout>

Activity页面代码逻辑

package com.xxx.demo.ui.activity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayout;
import android.widget.ImageView;

import com.aspsine.irecyclerview.demo.R;
import com.bumptech.glide.Glide;

import java.util.ArrayList;

public class Main2Activity extends AppCompatActivity {

    private GridLayout        gv_pics;
    private ArrayList<String> imgs = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        gv_pics = (GridLayout) findViewById(R.id.gv_pics);

        //模拟数据
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/07/06/4.jpg");
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/06/11/05.jpg");
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/06/11/06.jpg");

        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/04/10/01.jpg");
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/04/10/02.jpg");
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/04/10/03.jpg");

        imgs.add("http://pic.meizitu.com/wp-content/uploads/2016a/02/17/02.jpg");
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2015a/12/10/07.jpg");
        imgs.add("http://pic.meizitu.com/wp-content/uploads/2015a/10/26/01.jpg");

        imgs.add("http://pic.meizitu.com/wp-content/uploads/2015a/12/03/01.jpg");

        //处理数据,在数据不足一行时,添加空数据,在使用Glide加载时,失败后会指定相应图片。
        int columnLeft = gv_pics.getColumnCount() - imgs.size();
        for (int i = 0; i < columnLeft; i++) {
            imgs.add("");
        }

        int widthPixels = getResources().getDisplayMetrics().widthPixels;

        //使用代码的形式添加水平 平分界面的Imageview
        gv_pics.removeAllViewsInLayout();
        for (int i = 0; i < imgs.size(); i++) {
            ImageView imageView = new ImageView(this);
            imageView.setBackgroundResource(R.color.color_gray);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            //指定平分的布局样式
            GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams(
                GridLayout.spec(GridLayout.UNDEFINED, 1f),
                GridLayout.spec(GridLayout.UNDEFINED, 1f));
            layoutParams.height = widthPixels / 3;
            layoutParams.width = 0;
            //设置一些Margin
            layoutParams.setMargins(8, 8, 8, 8);
            //将布局样式应用到ImageView
            imageView.setLayoutParams(layoutParams);
            //加载图片,这里用的是Glide
            Glide.with(this).load(imgs.get(i)).placeholder(R.mipmap.ic_no_pic)
                .fallback(R.mipmap.ic_no_pic).dontAnimate().into(imageView);
            //将这个图片控件加到父View中
            gv_pics.addView(imageView);
        }

    }

}

最终效果

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android】使用v7.widget.GridLayout做九宫格。 的相关文章

随机推荐

  • Leetcode 121. 买卖股票的最佳时机

    买卖股票的最佳时机 给定一个数组 它的第 i 个元素是一支给定股票第 i 天的价格 如果你最多只允许完成一笔交易 即买入和卖出一支股票一次 设计一个算法来计算你所能获取的最大利润 注意 你不能在买入股票前卖出股票 示例 1 输入 7 1 5
  • 详解Unicode字符集以及字符编码实现(一)

    在日常生活中 我们经常会碰到打开一个文件 但是文件内容乱码的问题 比如我想看 西游记 这部小说 下载链接 https m ijjjxs com txt dl 35 12585 html 点击TXT电子书下载 很快就会下载完成 但是使用电脑自
  • npm ERR! chromedriver@2.46.0 install: `node install.js`

    vue项目npm install 时报错 如下 该问题是vue cli脚手架的一个bug 原因是chromedriver的部分文件被国内网络给墙掉了 无法下载完整的chromedirver包 解决办法 npm install chromed
  • 极限导数练习题

    f x sinx 2 x 当x趋近于0时 f x 的极限是0 f x sin x 2 x 当x趋近于0时 f x 的极限是0 f x sin 2x x 当x趋近于0时 f x 的极限是2
  • 利用python操纵数据库--数据写入与tkinter实现界面查询

    在日常练习sql的时候 又找不到好的线上数据库 这个时候不如自己下载一个mysql 但是数据批量写入呢 就可能是一个问题 这时候 利用python脚本批量写入即可 同时每次运行脚本也是一个麻烦的事 可以实现窗口输入 写到数据库中 这将在后面
  • centos7 开启网络连接

    1 当我们发现无法联网时 我们运行下面命令或者ping命令 ip addr 结果没有显示局域网的IP地址 2 我们去修改网卡配置文件 把网络连接打开 cd cd etc sysconfig network scripts vi ifcfg
  • 数据的清洗和检验(完全去重,缺失值的填充)

    一 完全去重 1 打开kettle工具 新建转换 gt 创建CSV文件输入控件 gt 1唯一行 哈希值 控件 gt 跳连接线 2 配置CSV文件输入控件 gt 进入CSV文件控制页面 如图所示 3 点击浏览 gt 选择完去重的文件merge
  • Hadoop学习笔记之在Eclipse中远程调试Hadoop

    转载地址 http itindex net detail 37273 hadoop E5 AD A6 E4 B9 A0 E7 AC 94 E8 AE B0 插件 话说Hadoop 1 0 2 src contrib eclipse plug
  • 记录一次cpu 100%线上问题排查

    功能问题 通过日志 单步调试相对比较好定位 性能问题 例如线上服务器CPU100 如何找到相关服务 如何定位问题代码 更考验技术人的功底 最近做项目时碰到线上某台实例不时出现CPU 100 的报警 线上部署了若干tomcat实例 即若干垂直
  • javase部分持续更新中...

    项目保存路径尽量不要出现中文 不要直接在磁盘目录下保存文件 注释 选中 Ctrl 关键字 学一个记一个 具有特殊含义的字 常量 程序运行过程中不可以改变的量 变量 在程序运行中可以改变的量叫做变量 int a 12 System out p
  • Unity 动画系统(Animation,Animator,Timeline)

    文章目录 1 Animation 1 1 创建Animation 1 2 Animation 属性 2 Animator 2 1 Animator 组件 2 2 Animation 状态 2 3 状态控制参数 2 4 代码中控制状态 3 代
  • vue&javascript点击空白处隐藏内容

    vue 1 创建一个按钮和容器 按钮控制显示和隐藏 容器存放内容 div 显示 div div 代码 div 2 编写自定义指令
  • 外键约束

    概念 一张表的一个字段受限于另外一张表的一个字段对应的值 这里涉及到两张表 被引用的表叫主表 父表 另外一张叫从表 子表 它们的关系 主从表关系 父子表关系 子表 定义了外键的表 外键的取值要么取父表中字段对应的值 要么取NULL值 严重受
  • 50款PS完美汉化插件一键安装,win+mac

    今天给大家带来2018最最牛逼的50款PS插件合集 包含了调色 磨皮 手绘 设计辅助等 各有特色 没有最好 只有最合适 所谓 萝卜青菜 各有所爱 包含有修图师最爱的人像磨皮神器 DR4 磨皮美白利器 Portraiture 3 一键降噪插件
  • CentOS+QT+KAFKA开发环境部署及测试

    CentOS QT KAFKA开发环境部署及测试 本文档记录了在CentOS环境下通过QT开发KAFKA程序的步骤 关于CentOS中安装QT集成开发环境 不再赘述 此处默认是在QT编译环境已经完备的情况下 如何配置KAFKA的编译环境及测
  • 人工智能-统计机器学习-线性回归

    监督学习 线性回归 linear regression 回归分析 分析不同变量之间存在的关系 回归模型 刻画不同变量之间关系的模型 如果这个模型是线性的 则称为线性回归模型 在现实生活中 往往需要分析若干变量之间的关系 如碳排放量与气候变暖
  • 石油化工行业能源管理解决方案分享

    目前石油化工企业普遍性的能源管理主要靠电子文件报表流转 层级传递能耗数据 这种能耗管理已经和现代企业生产实际需求相脱离 容易导致决策偏差 发出指令滞后等问题 严重影响企业的竞争力 某石油化学股份有限公司基于对企业能耗情况和现有能源管理模式的
  • 【疑难杂症】取消pyecharts绘制地图时默认显示小圆点标识

    取消pyecharts绘制地图时默认显示小圆点标识 1 问题 2 问题解决 手动反爬虫 原博地址 https blog csdn net lys 828 article details 124061946 知识梳理不易 请尊重劳动成果 文章
  • 转载:监控每个节点(Indices部分)

    集群的健康只是一个方面 它是对整个集群所有方面的一个很高的概括 节点状态的api是另外一个方面 它提供了关于你的集群中每个节点令你眼花缭乱的统计数据 节点的状态提供了那么多的统计数据 在你很熟悉它们执勤 你可能不确定哪些指标是至关重要 我们
  • 【Android】使用v7.widget.GridLayout做九宫格。

    布局文件 如果使用xml配置平分 那么配置大致如下 app layout rowWeight 垂直方向权重 app layout columnWeight 水平方向权重 app前缀是说明要使用v7所指定的属性 为了兼容