我是靠谱客的博主 优秀仙人掌,这篇文章主要介绍Android 自定义GridView,解决嵌套Grideview的显示不完全的问题,现在分享给大家,希望可以做个参考。

解决嵌套Grideview的显示不完全的问题,在这里自定义一个GridView组件继承于原来的GridView,重写onMeasure方法重绘组件,然后替换布局文件中GridView布局即可。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.pumasoft.cakeboss.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.GridView; /** * @author: xiaolijuan * @description: 自定义GridView,解决嵌套Grideview的显示不完全的问题 * @date: 2016-03-14 * @time: 10:49 */ public class CustomGridView extends GridView { public CustomGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomGridView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomGridView(Context context) { super(context); } /** * 其中onMeasure函数决定了组件显示的高度与宽度; * MeasureSpec.makeMeasureSpec函数中第一个参数指布局空间的大小,第二个参数是布局模式 * MeasureSpec.AT_MOST的意思就是子控件需要多大的控件就扩展到多大的空间 */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }

该自定义控件只是重写了GridView的onMeasure方法,现在只需要在布局文件中引入即可

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.xiaolijuan.gridviewdome.CustomGridView android:layout_width="match_parent" android:numColumns="3" android:layout_height="match_parent" /> </RelativeLayout>

重写的onMeasure方法决定了组件显示的高度与宽度,其中MeasureSpec.makeMeasureSpec函数中第一个参数指布局空间的大小,第二个参数是布局模式,下面说明一下MeasureSpec:
MeasureSpec封装了父布局传递给子布局的布局要求:
一、MeasureSpec一共有三种模式:
(1)EXACTLY(完全):一般是设置了明确的值或者是MATCH_PARENT,父元素决定了子元素的大小,子元素将被限定在给定的范围里而忽略它本身大小;
(2)AT_MOST(至多):表示子元素至多达到给定的一个最大值,一般为WARP_CONTENT;
(3)UNSPECIFIED(未指定):表示子布局想要多大就多大,很少使用;
 二、MeasureSpec常用的三个函数:
 (1)public static int makeMeasureSpec(int size,int mode):根据提供的大小值和模式创建一个测量值
 (2)public static int getSize(int measureSpec):获取这个测量值中表示的尺寸大小的值。
 (3)public static int getMode(int measureSpec):获取测量值中表示的模式(上述三个模式之一)
 (4)public static String toString(int measureSpec):获取测量值里面的模式和大小组成字符串返回来,方便打日志

本篇博客在这里就结束了,有不足的地方还望各路大神指导 ,谢谢!

最后

以上就是优秀仙人掌最近收集整理的关于Android 自定义GridView,解决嵌套Grideview的显示不完全的问题的全部内容,更多相关Android内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部