• ScrollView嵌套GridView和ListView的问题


    今天遇到了这样的界面 一看就是用ScrollView嵌套GridView最好处理了,也可以用ScrollView那样就麻烦了,我知道ScrollView嵌套GridView或ListView会有问题

    所以从网上差了一下资料,其实很简单就是重新GridView或ListView的onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法 附上代码:

     1 public class MyGridView extends GridView { 
     2     public MyGridView(Context context, AttributeSet attrs) { 
     3         super(context, attrs); 
     4     } 
     5 
     6     public MyGridView(Context context) { 
     7         super(context); 
     8     } 
     9 
    10     public MyGridView(Context context, AttributeSet attrs, int defStyle) { 
    11         super(context, attrs, defStyle); 
    12     } 
    13 
    14     @Override 
    15     public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    16 
    17         int expandSpec = MeasureSpec.makeMeasureSpec( 
    18                 Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
    19         super.onMeasure(widthMeasureSpec, expandSpec); 
    20     } 
    21 } 

    这样就可以解决滑动冲突的问题了,因为重写的这个方法就是把GridView的滑动去掉了。但是你会发现这个问题解决了下一个问题就来了,他会默认GridView显示在最上面,

    需要在Activity的 onWindowFocusChanged(boolean hasFocus) 添加 scrollview.scrollTo(0, 0); 至于为什么不添加到onCreate和onStart中你就需要自己去了解一下

    Activity的每个生命周期方法了。

    1 public void onWindowFocusChanged(boolean hasFocus)
    2     {
    3         scrollview.scrollTo(0, 0);
    4         super.onWindowFocusChanged(hasFocus);
    5     }

     从网上搜上的解决方案:

    1 scrollView.post(new Runnable()
    2         {
    3             @Override
    4             public void run()
    5             {
    6                 scrollView.fullScroll(ScrollView.FOCUS_UP);
    7             }
    8         });
  • 相关阅读:
    第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用
    trim思考
    国王验毒酒问题
    有人在群里问mysql如何选择性更新部分条件的问题
    有人在群里问 20180222055怎么转20180222-055 这样的问题
    如何下载腾讯视频的视频转为MP4常用格式视频
    天气预报的大雪真的下了
    群友面试的问题 我搞笑的帮忙回答一下
    电台大神打油诗
    ajax简单手写了一个猜拳游戏
  • 原文地址:https://www.cnblogs.com/androidxiaoyang/p/2856551.html
Copyright © 2020-2023  润新知