动态计算Gridview的高度,宽度,将GridView居中
/*** 设置GridView居中* 当父目录是RelativeLayout 需要在GridView设置 android:layout_centerHorizontal="true"* 当父目录是LinearLayout 需要在父目录设置 android:gravity="center_horizontal"* @param gridView*/
public static void calGridViewSumWH(GridView gridView) {int numColumns;int horizontalSpacing;try {numColumns = getFieldValue("mRequestedNumColumns", gridView);if (numColumns < 1) return;horizontalSpacing = getFieldValue("mRequestedHorizontalSpacing", gridView);ListAdapter listAdapter = gridView.getAdapter();if (listAdapter == null) return;int totalHeight = 0;int totalWidth = 0;int len = listAdapter.getCount();for (int i = 0; i < len; i++) {View listItem = listAdapter.getView(i, null, gridView);listItem.measure(0, 0);if (i < numColumns)totalWidth+= listItem.getMeasuredWidth();if ((i + 1) % numColumns == 0 && (i + 1) != len) {if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {totalHeight += listItem.getMeasuredHeight() + gridView.getVerticalSpacing();} else {totalHeight += listItem.getMeasuredHeight();}}if ((i + 1) == len) {totalHeight += listItem.getMeasuredHeight();}}if (len < numColumns) {gridView.setNumColumns(len);}if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {totalWidth = totalWidth + horizontalSpacing * (numColumns - 1);}ViewGroup.LayoutParams params = gridView.getLayoutParams();params.height = totalHeight;params.width = totalWidth;gridView.setLayoutParams(params);} catch (Exception e) {e.printStackTrace();}
}/*** 动态获取属性值* @param attributeName* @param gridView* @return*/
public static int getFieldValue(String attributeName, GridView gridView) {try {Field field = GridView.class.getDeclaredField(attributeName);field.setAccessible(true);return Integer.parseInt(field.get(gridView).toString());} catch (Exception e) {e.printStackTrace();}return 0;
}
然后xml在设置的时候,需要如下设置
<RelativeLayoutandroid:layout_width="130dp"android:layout_height="130dp"><ImageViewandroid:id="@+id/iv_img"android:layout_centerInParent="true"android:maxHeight="130dp"android:maxWidth="130dp"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</RelativeLayout>
因为上述代码测量得到的宽高会受到图片大小的影响,一旦图片大于父容器中设置的130dp,那样子测量得到的宽高也会变动,导致最后展示的效果会有所偏差。
<RelativeLayoutandroid:paddingTop="25dp"android:paddingBottom="25dp"android:background="@android:color/white"android:layout_width="match_parent"android:layout_height="wrap_content"><GridViewandroid:id="@+id/ahgv_qualification"android:verticalSpacing="25dp"android:horizontalSpacing="25dp"android:numColumns="2"android:layout_centerHorizontal="true"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</RelativeLayout>
动态计算Gridview的高度,宽度,将GridView居中相关推荐
- Android 动态计算ListView的高度
目录 一.简介 二.效果图 三.代码实现 一.简介 在Android开发的过程中有的时候我们需要手动计算ListView的高度,比如说,ScrollView中嵌套ListView的时候,我们就需要手动 ...
- android gridview设置高度,android设置GridView高度自适应,实现全屏铺满效果
使GridView每个item的高度自适应拉伸,达到整个GridView刚好铺满全屏的效果. public static void setGridViewMatchParent(GridView gr ...
- iOS开发总结-UITableView 自定义cell和动态计算cell的高度
UITableView cell自定义头文件: shopCell.h #import <UIKit/UIKit.h> @interface shopCell : UITableViewCe ...
- css动态计算元素的高度及宽度
原文:https://www.cnblogs.com/zhang1f/p/12574774.html 1.px 像素,我们在网页布局中一般都是用px. 2.百分比 百分比一般宽泛的讲是相对于父元素,自 ...
- CSS 获取当前可视屏幕高度--使用calc()方法动态计算宽度或者高度
先了解一下CSS3的相对长度单位和绝对长度单位(参考详细教程) : 相对长度单位 相对长度单位指定了一个长度相对于另一个长度的属性.对于不同的设备相对长度更适用. 单位 描述 em 它是描述相对于应用 ...
- iOS 动态计算文本内容的高度
关于ios 下动态计算文本内容的高度,经过查阅和网上搜素,现在看到的有以下几种方法: 1. // 获取字符串的大小 ios6 - (CGSize)getStringRect_:(NSString* ...
- python opencv-4.1.0 cv2.getTextSize()函数 (计算文本字符串的宽度和高度)
def getTextSize(text, fontFace, fontScale, thickness): # real signature unknown; restored from __doc ...
- 【uni-app】动态计算图片高度且保持宽高比
前言 图片容器宽度已确定 图片加载后,将图片容器按照图片的宽高比设置高度 思路 图片容器宽度已确定. uni-app的image组件,将mode设置为scaleToFill(不保持纵横比缩放图片,使图 ...
- 【uni-app】动态计算图片高度
前言 要求图片加载后,保持宽高比(16:9)且充满图片区 使用uni-app的image组件,将mode设置为scaleToFill(不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 ...
最新文章
- python中%是什么意思_python中%代表什么意思?
- 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)
- 智能运维监管系统终端_城市轨道交通关键设备智能运维系统初步建构
- .NET 指南:转换操作符
- mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程
- 大数据_Hbase-Filter 索引(优化)_根据column查询---Hbase工作笔记0020
- modbus功能码04实例_MODBUS功能码简介
- AAC 文件解析及解码流程
- 安装黑群晖找不到局域网电脑_黑群晖洗白太复杂?我用蒲公英P5轻松实现
- 对接微信公众(开放)平台,获取微信用户信息,实现第三方登录
- Win10系统下如何修改电脑名称?windows10更改电脑名称的方法
- tp5 对接腾讯云聊天
- ElGamal 算法思考
- 【北京迅为iMX6ULL】嵌入式学习之Linux系统编程视频教程
- 520送女友什么礼物最好、5个适合送给情侣的礼物
- UG NX 12 基准平面
- 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测
- 免费的Lucene 原理与代码分析完整版下载
- 鲁大师linux系统打印机驱动怎么安装,鲁大师安装打印机驱动的具体操作方法
- 人工智能必备知识——同济大学线性代数第四章向量组的线性相关性
热门文章
- c语言如何实现面向对象编程
- SupeSite模块参数说明
- Uncaught TypeError: Cannot read properties of undefined (reading ‘Constructo
- 华为鸿蒙应用名称填什么,鸿蒙报名这里边的应用名称选啥
- MongoDB:一、MongoDB是什么?MongoDB的优缺点
- vue若依登录页跳转其他页
- 图论的一些事儿 模版
- 2022年中国第三方证券APP创新专题分析
- bootstrap表格内容居中_bootstrap表单怎么居中
- seajs html 缓存,Seajs禁用缓存