android 在ScrollView中嵌入GridView
16lz
2021-01-26
android 在ScrollView中嵌入GridView
做android程序开发的都知道,不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动事件,导致只显示一到两行数据。那么就换一种思路,首先让子控件的内容全部显示出来,禁用了它的滚动。如果超过了父控件的范围则显示父控件的scrollbar滚动显示内容,思路是这样,一下是代码。
具体的方法是自定义GridView组件,继承自GridView。重载onMeasure方法:
- publicclassMyGridViewextendsGridView
- {
- publicMyGridView(android.content.Contextcontext,
- android.util.AttributeSetattrs)
- {
- super(context,attrs);
- }
- /**
- *设置不滚动
- */
- publicvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec)
- {
- intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec,expandSpec);
- }
- }
- publicclassMyGridViewextendsGridView
- {
- publicMyGridView(android.content.Contextcontext,
- android.util.AttributeSetattrs)
- {
- super(context,attrs);
- }
- /**
- *设置不滚动
- */
- publicvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec)
- {
- intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec,expandSpec);
- }
- }
其中onMeasure函数决定了组件显示的高度与宽度;
makeMeasureSpec函数中第一个函数决定布局空间的大小,第二个参数是布局模式
MeasureSpec.AT_MOST的意思就是子控件需要多大的控件就扩展到多大的空间
之后在ScrollView中添加这个组件就OK了,同样的道理,ListView也适用。
更多相关文章
- 我曾经的Android应用开发(一)
- 写一个Android日历控件
- android:创建自定义控件
- android中关于使用scrollview嵌套LinearLayout,页面滚动条不到底
- Android(安卓)标题背景渐变
- 简洁、高效、可自定义的开源的Android评论控件---CommentView
- 关于真机测试的android选择图片在ImageView上显示,调用setImageBi
- 【Android(安卓)并发编程】从进程的角度分析app的“生”与“死”
- android 控件之ProgressBar实现双进度条(通常用于流媒体的缓冲区