RecyclerView 嵌套 GridView ,GridView显示不完整。。。

a_tuzi 2015-08-07 11:43:28
RecyclerView 嵌套 GridView ,GridView显示不完整。。。
...全文
6776 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ID_晖 2017-12-20
  • 打赏
  • 举报
回复
public class MyGridView extends GridView { private boolean haveScrollbar = false; /** * 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为true。 默认为 false * * */ public void setHaveScrollbar(boolean haveScrollbar) { this.haveScrollbar = haveScrollbar; } public MyGridView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (haveScrollbar) { int expandSpec = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } @Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub if (ev.getAction() == MotionEvent.ACTION_MOVE) { return true;// 禁止Gridview进行滑动 } return super.dispatchTouchEvent(ev); } }
若愚爱问 2016-10-13
  • 打赏
  • 举报
回复
我也有类似需求,最后也是计算了高度,这种需求下GridView的Item一般都不会太多吧。
csdn_lr 2016-07-21
  • 打赏
  • 举报
回复
我日你m,点击来99次了,你特么这个能解决?
scnuxisan225 2015-08-19
  • 打赏
  • 举报
回复
引用 10 楼 a_tuzi 的回复:
[quote=引用 8 楼 scnuxisan225 的回复:] 建议不要重新计算高度,因为这中解决方式只是取巧的,本身Android官方就不建议嵌套。 而重新计算高度来实现你的需求是可以,但是你的Gridview的重用机制就等于废了,简单来说就是当Item数越多,你的GridView消耗的资源就大得离谱,而本身像ListView和GridVIew这些控件因为有重用,所有可以避免这个问题,你重新计算高度就等于重用机制无效了。 不知道你的需求究竟怎样,如果你GridView子项不多,重新计算高度或者直接改用Layout来填充还是可行的;如果子项很多,我建议从其他实现入手。
引用 8 楼 scnuxisan225 的回复:
建议不要重新计算高度,因为这中解决方式只是取巧的,本身Android官方就不建议嵌套。 而重新计算高度来实现你的需求是可以,但是你的Gridview的重用机制就等于废了,简单来说就是当Item数越多,你的GridView消耗的资源就大得离谱,而本身像ListView和GridVIew这些控件因为有重用,所有可以避免这个问题,你重新计算高度就等于重用机制无效了。 不知道你的需求究竟怎样,如果你GridView子项不多,重新计算高度或者直接改用Layout来填充还是可行的;如果子项很多,我建议从其他实现入手。
就是要实现跟天猫一样的 商品类别选择 效果。。分类界面[/quote] 大概看了下天猫的样式,我也不能完全断定用什么方式实现,但可以提供几个方向给你参考下。 1、像天猫这种大公司,一般都会用自定义View,这个我估计它也是在Android原有的基础上扩展过,如果你对这部分有兴趣,可以去github上面找一些自定义的View,找继承于AdapterView(ListView的基类)的看看; 2、如果你比较急于实现,可以试试ListView的HeaderView,ItemType入手,还可以看看Expandablelistview对你的需求有没有效。整个页面就一个ListView(包括HeaderView等等)就足够的了。顶部的搜索框再覆盖一层View就好。
a_tuzi 2015-08-19
  • 打赏
  • 举报
回复
引用 8 楼 scnuxisan225 的回复:
建议不要重新计算高度,因为这中解决方式只是取巧的,本身Android官方就不建议嵌套。 而重新计算高度来实现你的需求是可以,但是你的Gridview的重用机制就等于废了,简单来说就是当Item数越多,你的GridView消耗的资源就大得离谱,而本身像ListView和GridVIew这些控件因为有重用,所有可以避免这个问题,你重新计算高度就等于重用机制无效了。 不知道你的需求究竟怎样,如果你GridView子项不多,重新计算高度或者直接改用Layout来填充还是可行的;如果子项很多,我建议从其他实现入手。
引用 8 楼 scnuxisan225 的回复:
建议不要重新计算高度,因为这中解决方式只是取巧的,本身Android官方就不建议嵌套。 而重新计算高度来实现你的需求是可以,但是你的Gridview的重用机制就等于废了,简单来说就是当Item数越多,你的GridView消耗的资源就大得离谱,而本身像ListView和GridVIew这些控件因为有重用,所有可以避免这个问题,你重新计算高度就等于重用机制无效了。 不知道你的需求究竟怎样,如果你GridView子项不多,重新计算高度或者直接改用Layout来填充还是可行的;如果子项很多,我建议从其他实现入手。
就是要实现跟天猫一样的 商品类别选择 效果。。分类界面
JarQ 2015-08-08
  • 打赏
  • 举报
回复
表示RecyclerView可以实现ListView,GridView,横向ListView,流试布局等很多效果
开发者_android 2015-08-07
  • 打赏
  • 举报
回复
引用 4 楼 a_tuzi 的回复:
[quote=引用 3 楼 dalor 的回复:] [quote=引用 2 楼 a_tuzi 的回复:] [quote=引用 1 楼 dalor 的回复:] 重新计算gridview高度就OK了。
能具体点么。。。[/quote] 其实不太明白,为什么用两个相似的view?本来recyclerview就是可以替代gridview来使用,为什么你还嵌一个gridview???[/quote] 因为这个界面每一行都是一种分类啊,类似天猫的商品分类界面 [/quote] 只要需求,这样写也没关系了。 接上回,当gridview数据set后,写一个方法,重新计算填充完数据后显示的gridview的高度,再重新set给gridview,这样就可以全部显示了。
a_tuzi 2015-08-07
  • 打赏
  • 举报
回复
引用 3 楼 dalor 的回复:
[quote=引用 2 楼 a_tuzi 的回复:] [quote=引用 1 楼 dalor 的回复:] 重新计算gridview高度就OK了。
能具体点么。。。[/quote] 其实不太明白,为什么用两个相似的view?本来recyclerview就是可以替代gridview来使用,为什么你还嵌一个gridview???[/quote] 因为这个界面每一行都是一种分类啊,类似天猫的商品分类界面
开发者_android 2015-08-07
  • 打赏
  • 举报
回复
引用 2 楼 a_tuzi 的回复:
[quote=引用 1 楼 dalor 的回复:] 重新计算gridview高度就OK了。
能具体点么。。。[/quote] 其实不太明白,为什么用两个相似的view?本来recyclerview就是可以替代gridview来使用,为什么你还嵌一个gridview???
a_tuzi 2015-08-07
  • 打赏
  • 举报
回复
引用 1 楼 dalor 的回复:
重新计算gridview高度就OK了。
能具体点么。。。
开发者_android 2015-08-07
  • 打赏
  • 举报
回复
重新计算gridview高度就OK了。
scnuxisan225 2015-08-07
  • 打赏
  • 举报
回复
建议不要重新计算高度,因为这中解决方式只是取巧的,本身Android官方就不建议嵌套。 而重新计算高度来实现你的需求是可以,但是你的Gridview的重用机制就等于废了,简单来说就是当Item数越多,你的GridView消耗的资源就大得离谱,而本身像ListView和GridVIew这些控件因为有重用,所有可以避免这个问题,你重新计算高度就等于重用机制无效了。 不知道你的需求究竟怎样,如果你GridView子项不多,重新计算高度或者直接改用Layout来填充还是可行的;如果子项很多,我建议从其他实现入手。
开发者_android 2015-08-07
  • 打赏
  • 举报
回复
引用 6 楼 a_tuzi 的回复:
[quote=引用 5 楼 dalor 的回复:] [quote=引用 4 楼 a_tuzi 的回复:] [quote=引用 3 楼 dalor 的回复:] [quote=引用 2 楼 a_tuzi 的回复:] [quote=引用 1 楼 dalor 的回复:] 重新计算gridview高度就OK了。
能具体点么。。。[/quote] 其实不太明白,为什么用两个相似的view?本来recyclerview就是可以替代gridview来使用,为什么你还嵌一个gridview???[/quote] 因为这个界面每一行都是一种分类啊,类似天猫的商品分类界面 [/quote] 只要需求,这样写也没关系了。 接上回,当gridview数据set后,写一个方法,重新计算填充完数据后显示的gridview的高度,再重新set给gridview,这样就可以全部显示了。[/quote] 不好意思,,能不能具体一点。。listview我知道,,这个gridview 不是特别清楚。[/quote] 计算高度,和listview一样,先获得一个item的高度:获得item,调用getMeasuredHeight方法,得到一个item高度。一共有多少个item,乘一下,再设置给gridview:grid.getLayoutParams().height=高度
a_tuzi 2015-08-07
  • 打赏
  • 举报
回复
引用 5 楼 dalor 的回复:
[quote=引用 4 楼 a_tuzi 的回复:] [quote=引用 3 楼 dalor 的回复:] [quote=引用 2 楼 a_tuzi 的回复:] [quote=引用 1 楼 dalor 的回复:] 重新计算gridview高度就OK了。
能具体点么。。。[/quote] 其实不太明白,为什么用两个相似的view?本来recyclerview就是可以替代gridview来使用,为什么你还嵌一个gridview???[/quote] 因为这个界面每一行都是一种分类啊,类似天猫的商品分类界面 [/quote] 只要需求,这样写也没关系了。 接上回,当gridview数据set后,写一个方法,重新计算填充完数据后显示的gridview的高度,再重新set给gridview,这样就可以全部显示了。[/quote] 不好意思,,能不能具体一点。。listview我知道,,这个gridview 不是特别清楚。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧