GridView 自适应高度

前段时间在使用RecycleView嵌套GridView时出现了一点问题,记录一下!

遇到的问题

外层是一个RecycleView,RecycleView的每个item是一个GridView。

运行时发现每个item只显示了一行数据,我当时还以为是数据出现了问题,结果查看完log后发现数据是全部加载完的,最后才看到GridView的高度设置成 wrap_content时就会显示1行数据,设置成 match_parent 时,每条item的间距又太大了,设置成固定的值?但是每个item的内容不一致,有的多有的少,这。。。

自定义view呗,要不咋整?

解决方案

 1 public class AutoGridView extends GridView {
 2 
 3     public AutoGridView(Context context) {
 4         super(context);
 5     }
 6 
 7     public AutoGridView(Context context, AttributeSet attrs) {
 8         super(context, attrs);
 9     }
10 
11     public AutoGridView(Context context, AttributeSet attrs, int defStyleAttr) {
12         super(context, attrs, defStyleAttr);
13     }
14 
15     /**
16      * 改写gridview高度为自适应
17      *
18      * @param widthMeasureSpec
19      * @param heightMeasureSpec
20      */
21     @Override
22     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
23         int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
24                 MeasureSpec.AT_MOST);
25         super.onMeasure(widthMeasureSpec, expandSpec);
26     }
27 }

完美解决!!

GridView的一些特殊属性:

1.android:numColumns=”auto_fit” //GridView的列数设置为自动

2.android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度

3.android:stretchMode=”columnWidth"//缩放与列宽大小同步

4.android:verticalSpacing=”10dp” //两行之间的边距

5.android:horizontalSpacing=”10dp” //两列之间的边距

6.android:cacheColorHint="#00000000" //去除拖动时默认的黑色背景

7.android:listSelector="#00000000" //去除选中时的黄色底色

8.android:scrollbars="none" //隐藏GridView的滚动条

9.android:fadeScrollbars="true" //设置为true就可以实现滚动条的自动隐藏和显示

10.android:fastScrollEnabled="true" //GridView出现快速滚动的按钮(至少滚动4页才会显示)

11.android:fadingEdge="none" //GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色)

12.android:fadingEdgeLength="10dip" //定义的衰落(褪去)边缘的长度

13.android:stackFromBottom="true" //设置为true时,你做好的列表就会显示你列表的最下面

14.android:transcriptMode="alwaysScroll" //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内

15.android:drawSelectorOnTop="false" //点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false)

posted @ 2022-02-10 16:32  渣娃  阅读(264)  评论(0编辑  收藏  举报