普通的做法是设置一个高度,然后里面能显示出来几行就是几行,如果里面的内容高度变了,就需要重新调整高度来适配。

观察了一下它的onMeasure

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { ..... if (heightMode == MeasureSpec.AT_MOST) {
    int ourSize =  mListPadding.top + mListPadding.bottom;
   
    final int numColumns = mNumColumns;
    for (int i = ; i < count; i += numColumns) {
        ourSize += childHeight;
        if (i + numColumns < count) {
            ourSize += mVerticalSpacing;
        }
        if (ourSize >= heightSize) {
            ourSize = heightSize;
            break;
        }
    }
    heightSize = ourSize;
}
... }

发现,如果是它设置wrap_content,可以通过改变它的adapter来确定行数,具体方法如下是:

MyAdapter

@Override
    public int getCount() {
        if (mIsOnMeasure && super.getCount() >MAX_COUNT) {
            return MAX_COUNT;
        }
        return super.getCount();
    }     public void setOnMeasureStatus(boolean isOnMeasure) {
        mIsOnMeasure = isOnMeasure;
    } Gridview- > @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
        if (heightMode == MeasureSpec.AT_MOST) {
            ((MyAdapter) getAdapter()).setOnMeasureStatus(true);
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            int height = getMeasuredHeight();
            ((FolderAdapter) getAdapter()).setOnMeasureStatus(false);
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            setMeasuredDimension(getMeasuredWidthAndState(),
                    MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
        } else {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }

在onMeasure的时候,先让adapter假装有行数×列数的内容,调用 super.onMeasure先算出一个高,这个就是期望高度。

然后在调用一次  super.onMeasure(widthMeasureSpec, heightMeasureSpec),把整个view绘制出来
最后通过setMeasuredDimension就可以做到了。

Android GridView设置行数的更多相关文章

  1. 为Android GridView 设置行背景

    经常有这样的需求,你的功能图标要像一个个物品,摆放在书架上,像这样: 我的思路比较简单,重载GridView,在他绘制子视图前,先把背景绘制完成 1 2 3 4 5 6 7 8 9 10 11 12 ...

  2. Android GridView 指定行数,动态行宽,占满空间

    有时间我们需要 使用GridViw 让它占满父控件,例: 特别是在适配的时间比较麻烦,在不同的机型上可能分出下,下面空的太多,或有滚动条问题,; 下面说一下实现思路: 首先,设置GridView 为三 ...

  3. 在linux中使用Sqlplus命令登录MySQL,查看表并设置行数和宽度,使其正常显示

    在linux中使用sqlplus命令进入MySQL,设置行数和行宽   1) 查看目前的pagesize,默认是14: 1.      show pagesize;    2.      set pa ...

  4. Android:TextView最小行数设置

    我们有时候为了保证TextView必须有一个最小的高度,那么就需要设置这个行数. 因为如果你不设置的话,在measure这个TextView的时候,此时就无法准确的得到一个最小高度.因为设备不同,所以 ...

  5. Android Studio显示行数

    Android Studio在打开的文件左側单击鼠标右键,也能像Eclipse一样设置显示代码行数,如图1.可是这边跟Eclipse有一个非常大的差别,Eclipse设置后,其余的相应文件也跟着生效, ...

  6. Android Studio代码行数统计插件Statistics

    Android Studio 是没有提提供统计代码全部行数的功能的,但是对于开发者来说,这个功能确实必备的,Statistic统计代码行数非常方便,也很详细. 1,首先肯定是将插件下载下来,下载地址: ...

  7. android ScrollView 控制行数

    利用ScrollView 来控制textView 显示的行数 <ScrollView android:layout_width="fill_parent" android:l ...

  8. Android Studio设置行宽、格式化断行

    设置基于Android studio 1.2,其它版本可能位置不大一样,可以直接搜索 1.设置行宽 就是那条右标准线的位置:Setting-->Editor-->Code Style,右侧 ...

  9. Android Studio 统计行数

    开发中常常会想看看自己累积在这个项目中写了多少代码了,以下就是在Android Studio查看统计项目代码总行数的方法. 打开Android Studio,按快捷键Ctrl+Shift+A 输入fi ...

随机推荐

  1. linux rpm 安装包制作

    今天的任务是把make好的install作成rpm. 3GPP 的重要性, 不必多言 例1. unpackaged if [ -z "`ps -ef|grep kamailio.pid|gr ...

  2. lua-nginx-module模块常用命令

    ngx.location.capture 用法: local res = ngx.location.capture(uri, options) 发起一个同步非阻塞的nginx子请求,uri是inter ...

  3. 用js实现匹配文本中的电话号、固定电话号

    思路: 1.用正则取出所有数字串 说起来容易,做起来难,开始只是简单的/D+/,后边发现这样做会将固定电话分成两段数字串,后经百度找到解决办法 /[^0-9/-]/ 意思是非数字不包括-作为分割 2. ...

  4. Python练习 | WebServer

    #-*- coding:utf-8 -*- import sys, os from http.server import BaseHTTPRequestHandler, HTTPServer #--- ...

  5. 添加ASP.NET网站资源文件夹

    ASP.NET应用程序包含7个默认文件夹,分别为Bin.APP_Code.App_GlobalResources.App_LocalResources.App_WebReferences.App_Br ...

  6. unittest之断言

    在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用 unittest 组件测试用例的时候,断言 ...

  7. Flyway-使用步骤

      1.创建一个Maven项目 2.编辑当下的pom.xml,添加flyway依赖和Mysql依赖 <project ...> ... <dependencies> <d ...

  8. html的img标签

    html显示图片 1.最简单: <img src="图片路径"/> 2.如果要改变图片显示的尺寸 <img src="图片路径" width= ...

  9. 100行代码搞定抖音短视频App,终于可以和美女合唱了。

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老 ...

  10. axios的兼容性

    axios的兼容性处理   一.简介 看看官网的简介: “Promise based HTTP client for the browser and node.js” 译:基于 Promise 的 H ...