概述
解决嵌套Grideview的显示不完全的问题,在这里自定义一个GridView组件继承于原来的GridView,重写onMeasure方法重绘组件,然后替换布局文件中GridView布局即可。
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方法,现在只需要在布局文件中引入即可
<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 自定义GridView,解决嵌套Grideview的显示不完全的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复