使用两个GridView,两个GridView一起上下滚动;
如果直接将两个GridView添加到同一个界面上,它们是各自滚动的。
因此,我考虑使用SrollView,将它们包装一下!
但这样做会提示如下信息:
The vertically scrolling ScrollView should not contain another vertically scrolling widget (GridView)
并且GridView的界面也显示不全,只显示了一部分。

网上搜了一下,使用下面这个方法,效果挺好的!能满足我的需求!
从GridView派生出一个自定义的类(MyGridView),重载其测量方法(onMeasure):

/*** @Type: MyGridView* 让GridView可以做ScrollView的子控件,但尺寸不会减小*/
public class MyGridView extends GridView {public MyGridView(Context context) {  super(context);  }  public MyGridView(Context context, AttributeSet attrs) {  super(context, attrs);  }  public MyGridView(Context context, AttributeSet attrs, int defStyle) {  super(context, attrs, defStyle);  }  @Override  public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,  MeasureSpec.AT_MOST);  super.onMeasure(widthMeasureSpec, expandSpec);  }
}  

在XML中,将原来使用系统的GridView,替换成自定义的MyGridView即可:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="wrap_content">
<RelativeLayout android:layout_width="wrap_content"android:layout_height="wrap_content"tools:context=".MainActivity" ><com.gaojinshan.MyGridViewandroid:id="@+id/gv_app1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:horizontalSpacing="0dp"android:gravity="center"android:numColumns="4"android:stretchMode="columnWidth" android:verticalSpacing="0dip"/><com.gaojinshan.MyGridViewandroid:id="@+id/gv_app2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/gv_app1"android:horizontalSpacing="0dp"android:gravity="center"android:numColumns="2"android:stretchMode="columnWidth" android:verticalSpacing="0dip"android:scrollbars="none"/>
</RelativeLayout>
</ScrollView>

在GridView所在页的其他控件的XML里配置上focusableInTouchMode=true,如下所示:

  1. android:focusable="true"
  2. android:focusableInTouchMode="true"

在点击切换到该页面时,使用ScrollView的smoothScrollTo(0, 0)方法,将滚动条置顶

        public void onClick(View v) {mViewPager.setCurrentItem(item);View view = mViewPager.getChildAt(item);if (view != null) {((ScrollView) view).smoothScrollTo(0, 0);}}

转载于:https://www.cnblogs.com/regalys168/p/4848270.html

scrollview 与 listView 的显示不全问题相关推荐

  1. ScrollView嵌套ListView只显示一行

    在开发的过程当中,由于手机屏幕的大小的限制,我们经常需要使用滑动的方式,来显示更多的内容.在最近的工作中,遇见一个需求,需要将ListView嵌套到ScrollView中显示.于是乎有了如下布局: & ...

  2. 日积月累:ScrollView嵌套ListView只显示一行

    在开发的过程当中,由于手机屏幕的大小的限制,我们经常需要使用滑动的方式,来显示更多的内容.在最近的工作中,遇见一个需求,需要将ListView嵌套到ScrollView中显示.于是乎有了如下布局: [ ...

  3. Android gridview 嵌套在listview中显示不全问题

    在开发中,常常会遇到这样的问题,需要在listview中去嵌套一个gridview. 但是用原生的gridview并不能满足要求,因为会有显示不全的问题.所以自定义一个属于自己的gridview就可以 ...

  4. ScrollView 嵌套 ListView 只显示第一行的源码分析

    要带着问题来阅读源码,解惑以满足心中的好奇心,知其然并知其所以然,了解发现 Google 工程师的代码设计原理. 1.猜测是在 onMeasure 的时候,只测量了第一个 item. 在 Measur ...

  5. android scrollview listview显示不全

    原来处理方法是重写ListView import android.content.Context; import android.util.AttributeSet; import android.v ...

  6. 解决ListView显示不全、滑动冲突问题

        在开发中,ListView是使用得最多的控件,有时候会遇到ListView因为各种原因引起的数据显示不全,例如,嵌套了ScrollView等.这个解决的办法很多,这里记录一下我自己用过的方法, ...

  7. android开发 listview 头部 轮播,listview添加的头部布局超过一屏头部内容显示不全...

    headView的实际高度超过一个屏幕,但是显示的结果只有一个屏幕,超过一个屏幕高度意外的部分显示不全. 只使用了listView.getRefreshable().addHeadView(headV ...

  8. android中ScrollView嵌套ListView或GridView显示位置问题

    Android中ScrollView中嵌套ListView或GridView时在开始进入界面时总是显示中间位置,开头的位置显示不出来.这种情况下只需要在ScrollView的父控件中添加以下两行代码即 ...

  9. ScrollView嵌套ListView后,进入页面不从顶部开始显示的问题解决

    ScrollView嵌套ListView后,进入页面不从顶部开始显示的问题解决 首先,正常情况下,如果在ScrollView里嵌套ListView后,会发现ListView只显示1条数据 那么,为了解 ...

最新文章

  1. (四)工况曲线构建 2019年研究生数学建模D题《汽车行驶工况构建》
  2. css和HTML布局小技巧
  3. 第四章 进程(3)进程的命令行环境变量
  4. 蓝桥杯比赛常考算法_备战蓝桥--算法竞赛入门第一章总结
  5. URAL 1225 Flags
  6. [初级]Java中的switch对整型、字符型、字符串的具体实现细节
  7. 勇者斗恶龙UVa11292 - Dragon of Loowater
  8. 05 - Django应用第二步
  9. Java虚拟机——虚拟机类的加载机制
  10. 猿创征文|从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析
  11. 2022第九届生物发酵展(济南)3月召开,拓展生物发酵行业新机遇
  12. 北大国际医院:基于互联网医疗的移动诊疗方案分析与设计
  13. Latex写文章时插入单栏图片和双栏图片方法
  14. 四种“不使用第三方变量就可以交换两个变量值”的方法
  15. 第8节 实例-写个简单的操作器
  16. 嵌入式操作系统和RTOS(实时操作系统)介绍。
  17. 考研:从了解初试开始!
  18. burp与FoxyProxy抓包
  19. 华为电脑分类四个系列_华为正式推出“重新定义的个人电脑”,我们用四个问题阐述它是啥...
  20. Element UI中MessageBox标准用法

热门文章

  1. 前端学习(3209):react中类中方法的this指向
  2. [css] 说下你对background-size的理解,它有什么运用场景?
  3. [css] 请问触发hasLayout的后果是什么?
  4. 前端学习(2567):指令的本质
  5. 前端学习(1702):前端系列javascript之this
  6. 前端学习(1335):mongoDB导入数据
  7. 前端学习(808):复杂数据类型传参
  8. 前端学习(685):循环的目的
  9. 13.表格标签及其应用实例
  10. java学习(162):同步对象锁