动态计算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 元素 ...
最新文章
- deeplearning量化
- python3笔记_python3基础笔记(一)
- 利用Github+Jeklly搭建个人博客网站
- 逃离 AI 赛道的投资人:做局失利、破局无力
- linux常用命令收集(持续中)
- 忘记虚拟机root密码的解决办法
- jQuery学习入门总结之css()和addClass()的不同
- Innovation Factory Open Day
- 看的一个pdf说的。。大型网站架构演变
- easyui 布局之window和panel一起使用时,拉动window宽高时panel不跟随一起变化
- python安装与开发环境搭建_Python安装和开发环境搭建
- springboot actuator_Spring Boot之程序性能监控
- 数据结构 8-0 排序
- 《尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通)》视频1
- 通过 jstack 与 jmap 分析一次线上故障
- 肠道菌群失调是II型糖尿病和炎症性肠病的标志物
- Pro 了,更强了 — 米家台灯 Pro 评测
- ISM频段ZigBee传输距离的估算
- 基于HDP使用Flume实时采集MySQL中数据传到Kafka
- ale_python_interface安装操作