android 在ScrollView中嵌入GridView

做android程序开发的都知道,不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动事件,导致只显示一到两行数据。那么就换一种思路,首先让子控件的内容全部显示出来,禁用了它的滚动。如果超过了父控件的范围则显示父控件的scrollbar滚动显示内容,思路是这样,一下是代码。

具体的方法是自定义GridView组件,继承自GridView。重载onMeasure方法:

  1. publicclassMyGridViewextendsGridView
  2. {
  3. publicMyGridView(android.content.Contextcontext,
  4. android.util.AttributeSetattrs)
  5. {
  6. super(context,attrs);
  7. }
  8. /**
  9. *设置不滚动
  10. */
  11. publicvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec)
  12. {
  13. intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,
  14. MeasureSpec.AT_MOST);
  15. super.onMeasure(widthMeasureSpec,expandSpec);
  16. }
  17. }
[java] view plain copy print ?
  1. publicclassMyGridViewextendsGridView
  2. {
  3. publicMyGridView(android.content.Contextcontext,
  4. android.util.AttributeSetattrs)
  5. {
  6. super(context,attrs);
  7. }
  8. /**
  9. *设置不滚动
  10. */
  11. publicvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec)
  12. {
  13. intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,
  14. MeasureSpec.AT_MOST);
  15. super.onMeasure(widthMeasureSpec,expandSpec);
  16. }
  17. }
public class MyGridView extends GridView { public MyGridView(android.content.Context context, android.util.AttributeSet attrs) { super(context, attrs); } /** * 设置不滚动 */ public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }

其中onMeasure函数决定了组件显示的高度与宽度;

makeMeasureSpec函数中第一个函数决定布局空间的大小,第二个参数是布局模式

MeasureSpec.AT_MOST的意思就是子控件需要多大的控件就扩展到多大的空间

之后在ScrollView中添加这个组件就OK了,同样的道理,ListView也适用。

更多相关文章

  1. 我曾经的Android应用开发(一)
  2. 写一个Android日历控件
  3. android:创建自定义控件
  4. android中关于使用scrollview嵌套LinearLayout,页面滚动条不到底
  5. Android(安卓)标题背景渐变
  6. 简洁、高效、可自定义的开源的Android评论控件---CommentView
  7. 关于真机测试的android选择图片在ImageView上显示,调用setImageBi
  8. 【Android(安卓)并发编程】从进程的角度分析app的“生”与“死”
  9. android 控件之ProgressBar实现双进度条(通常用于流媒体的缓冲区

随机推荐

  1. android 相对布局
  2. Android获取当前时间
  3. Android ScrollView 去掉 scrollbar 和
  4. 日期和时间(DatePicker、TimePicker)
  5. Android中Json的解析和构建
  6. Android 10 获取相册图片失败
  7. 【android】通话录音
  8. Android文件列表RecyclerView中点击视频
  9. Android API等级、Android版本、发布日期
  10. Android 9.0 P 状态栏下移的实现