博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 解决ScrollView嵌套ListView的问题,不能全屏,全屏不能显示下面控件
阅读量:5099 次
发布时间:2019-06-13

本文共 1539 字,大约阅读时间需要 5 分钟。

在开发中遇到ScrollView嵌套ListView的问题,最开始发出不能全屏,效果是这样的;

但我想要的效果是这样的:

下面看一下布局文件:

网上说在ScrollView 加入
android:fillViewport="true"
但同样存在问题,当listview 长度大于屏幕高度时,展示的效果是只能显示listview ,不能正常显示下面的按钮控件;

效果如下:

下面看一下最终的解决方案:

如果对自定义控件熟识的人,肯定想到解决方案了,重写listview ;

/** * Created by http://blog.csdn.net/q610098308 on 2015/12/17. */public class ListViewForScrollView extends ListView {    public ListViewForScrollView(Context context) {        super(context);    }    public ListViewForScrollView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public ListViewForScrollView(Context context, AttributeSet attrs,                                 int defStyle) {        super(context, attrs, defStyle);    }    @Override    /**     * 重写该方法,达到使ListView适应ScrollView的效果     */    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,                View.MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }}
下面普及一下:

OnMeasure一些知识;

我们把布局文件的宽和高写成wrap_content,会发现效果并不是我们的,系统帮我们测量的高度和宽度都是MATCH_PARNET,当我们设置明确的宽度和高度时,系统帮我们测量的结果就是我们设置的结果,当我们设置为WRAP_CONTENT,或者MATCH_PARENT系统帮我们测量的结果就是MATCH_PARENT的长度。

所以,当设置了WRAP_CONTENT时,我们需要自己进行测量,即重写onMesure方法”:

重写之前先了解MeasureSpec的specMode,一共三种类型:

EXACTLY:一般是设置了明确的值或者是MATCH_PARENT

AT_MOST:表示子布局限制在一个最大值内,一般为WARP_CONTENT

UNSPECIFIED:表示子布局想要多大就多大,很少使用

这里我们直接告诉系统我们设置是AT_MOST;

转载于:https://www.cnblogs.com/sharecenter/p/5621014.html

你可能感兴趣的文章
crontab命令使用文档.txt
查看>>
Luogu2986 [USACO10MAR]伟大的奶牛聚集 (树形DP)
查看>>
在JasperReport中填充JavaBean(4)
查看>>
npm init、 npm install -S 、npm install -D
查看>>
MYSQL双主故障解决实例。
查看>>
软件测试
查看>>
JAVA当中内存管理与垃圾回收!
查看>>
[HNOI2012] 矿场搭建
查看>>
py+selenium IE 定位到元素,但点击不了元素的问题【已解决】
查看>>
20160908_Redis主从复制Replication
查看>>
ZNYW.20180201_01_DianQiLiang.svg
查看>>
springboot---->springboot中的格式化(一)
查看>>
【Java每日一题】20170104
查看>>
C语言基本数据类型简介
查看>>
[App Store Connect帮助]七、在 App Store 上发行(2.5)设定价格与销售范围:向企业或教育机构分发您的 App...
查看>>
[Swift]LeetCode337. 打家劫舍 III | House Robber III
查看>>
[Swift]LeetCode368. 最大整除子集 | Largest Divisible Subset
查看>>
[Swift]LeetCode493. 翻转对 | Reverse Pairs
查看>>
[Swift]LeetCode42. 接雨水 | Trapping Rain Water
查看>>
cJONS序列化工具解读三(使用案例)
查看>>