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

概述

解决嵌套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的显示不完全的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部