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( 00) ;    
          } 
     });  

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

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

 

解决方案2:

  1. 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放在顶部,最后在代码中这样做:


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. view.setFocusable(true);  
  2. view.setFocusableInTouchMode(true);  
  3. view.requestFocus();  


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值