zoukankan      html  css  js  c++  java
  • Android 解决ScrollView下嵌套ListView进页面不在顶部的问题

    以下为整理:

    方法1 

    刚开始还可以,后来再调试时就不行了。

    为了解决scrollview和listview冲突  设置了listview的高度   结果进页面就不是在顶部了 。

    解决方案1:ScrollView.post()

    sv_container.post(  
        new Runnable() {  
                public void run() {   
                    //sv_container.fullScroll(ScrollView.FOCUS_UP);   
                    sv_container.scrollTo(0, 0) ;   
                }   
           });

    【注意】方法中开一个新线程是必要的。否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。

     在listview绘制好数据后,就可以使用该方法了,可以达到进页面就在顶部的目的,但是能感觉页面有明显的跳动。

    解决方案2:

    sv_container.smoothScrollTo(0,0);  

    在listview绘制好数据后使用,感觉不到页面有跳动,推荐使用该法。

    在ListView完成刷新后我们如果需要做些事情可以给它添加一个listener:

    mSongsList.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
                @Override
                public void onLayoutChange(View v, int left, int top, int right,
                        int bottom, int oldLeft, int oldTop, int oldRight,
                        int oldBottom) {
    
    
                            }
    }

    每次在listView的adapter的notifyDatechange调用后这个onLayoutChange都会被回调,我们就可以在这里做些我们想要的事情。 

    方法2

    目前使用方法。

    一起学android之解决在scrollview中嵌套ListView切换界面时scrollview整体向下滑动(31)

    有时候我们在scrollview中会嵌套ListView,在嵌套ListView(ListView上面还有一些控件)后,切换Activity时会发现整个

    scrollview 被向下滑动直到ListView置顶了,而上面的控件无法显示时,我们可以这样做:

    将图中的View放在顶部,最后在代码中这样做:

    view.setFocusable(true);  
    view.setFocusableInTouchMode(true);  
    view.requestFocus();  

    通过setFocusable和setFocusableInTouchMode方法获得焦点,最后通过requestFocus执行。

  • 相关阅读:
    JDK源码分析 – HashMap
    牛哄哄的celery
    redis数据库基础篇
    RPC的入门应用
    Python的常用模块
    消息队列之真知灼见
    面向对象编程(2)
    python3的C3算法
    面向对象编程(1)
    CRM项目之stark组件(2)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/6265302.html
Copyright © 2011-2022 走看看