2013.03.19(7)———android scrollview和listview共存的问题
ScrollView嵌套GridView或者是ListView时,就会莫名其妙的出现问题,这里 我总结一下 我遇到的问题 总共有两个
1、listview显示不完整
参考:
http://www.2cto.com/kf/201204/127363.html
这个可以自定义一下listview,如下
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(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);
}
}
这样 listview 就可以完整显示了
2、listview滚动加载失效
一般我写listview滚动加载 ,都是利用onScrollChange这个函数,如下
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState == OnScrollListener.SCROLL_STATE_IDLE){
if(view.getLastVisiblePosition()==(view.getCount()-1)){
this.loadData();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
然后
mLst.setOnScrollListener(this);
但是 当ListView在Scrollview里面的时候 这个就不管用了 ,为了解决这个问题,我们可以监听scrollview滚动到底部的事件 然后 来加载listview数据
参考:http://gundumw100.iteye.com/blog/1164066
如下所示代码
mScl.setOnTouchListener(this);
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SCROLL_BOTTOM), 200);
break;
default:
break;
}
return false;
}
//handler
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(_dialog!=null && _dialog.isShowing()){
_dialog.dismiss();
}
switch(msg.what){
case MSG_SCROLL_BOTTOM:
if (mLayRoot.getHeight() <= mScl.getScrollY() + mScl.getHeight()) {//判断是否触底
System.out.println("on bottom!");
if(mIndexStart==0){
if(mArrComment.size() >= (mIndexShow-1) * DBOpenHelper.PAGE_COUNT){
mPrg.setVisibility(View.VISIBLE);
new Thread(new LoadCommentThread()).start();
}
}
}
break;
}
}
};
分享到:
相关推荐
下面我们将详细探讨如何在Android中正确实现ScrollView和ListView的共存,以及如何处理可能遇到的问题。 首先,理解ScrollView和ListView的特性是关键。ScrollView是一个可以容纳多个子视图并允许整体滚动的容器,...
在Android开发中,ScrollView和ListView是...总的来说,处理ScrollView和ListView的嵌套问题需要对Android布局有深入理解,同时也要关注性能和用户体验。合理的设计和优化能够帮助我们构建出流畅、功能完善的移动应用。
综上所述,解决ScrollView与ListView共存问题的关键在于合理利用Android提供的组件和特性,如NestedScrollView、Header/Footer视图、ViewHolder模式等。同时,通过监听和处理滚动事件,可以实现ListView的自动翻页...
总的来说,Android开发中的ScrollView嵌套ListView和GridView是一项挑战,但通过巧妙地使用SwipeRefreshLayout、自定义适配器和滚动事件处理,我们可以构建出高效且功能丰富的用户界面。同时,不断优化性能和用户...
在Android开发中,ScrollView和ListView是两种常用的布局组件。ScrollView是一个可以包含多个子视图并允许用户滚动查看全部内容的视图容器,而ListView则是一个用于显示大量数据且支持滚动的视图,通常用于实现列表...
在Android开发中,ScrollView和ListView是两种常用的布局组件。ScrollView是一个可以滚动的视图容器,它允许其内容超出屏幕大小。而ListView则用于显示一列可滚动的项目,通常用于展示大量的数据。当在一个布局中...
在Android开发中,ScrollView、ListView和ViewPager是三个非常常见的组件,它们各自有着不同的用途和功能。当需要在同一个布局中同时使用这三个组件时,开发者可能会遇到一些挑战,因为它们本质上都是处理滚动行为的...
在Android开发中,有时我们需要实现一个功能,即对ScrollView或ListView等滚动视图进行截图,并将截图保存到用户的图库中。这个功能在许多应用场景下非常有用,比如社交媒体分享、应用内部保存用户浏览记录或者创建...
在Android开发中,ScrollView和ListView是两种常用的布局控件,它们各自有特定的用途,但有时在实际应用中,我们可能需要将它们结合使用,以实现特定的界面效果,比如在滚动时保持底部元素固定可见。这篇博文主要...
在Android开发中,ScrollView和ListView是两种常用的布局组件,它们分别用于实现可滚动的大视图和展示多行可滚动的数据列表。然而,在实际应用中,当这两种组件同时存在于一个界面时,滚动冲突的问题就会出现,导致...
在Android开发中,ScrollView和ListView都是非常常用的控件。ScrollView是一个可滚动的视图容器,能够包含一个或多个视图,并允许用户上下滑动查看超出屏幕的内容。而ListView则是一个显示多行数据的视图,通常用于...
在Android开发中,ScrollView和ListView都是非常常见的视图组件。ScrollView是一个可以滚动的布局容器,它允许用户滚动包含的内容,而ListView则是一个可滚动的列表,通常用于显示大量数据集。当需要在一个页面中...
在Android开发中,ScrollView和ListView的嵌套是一个常见的需求,但同时也伴随着许多技术挑战,主要问题在于两者都具有滚动功能,导致冲突,使得用户在滚动时可能会遇到不确定的行为。本篇将详细介绍如何解决这种...
在Android开发中,ListView是用于显示大量数据列表的常用组件,而ScrollView则是一个可以垂直滚动的视图容器,常用于包含多个子视图。当在一个ScrollView内嵌套一个ListView时,由于两者都具有滑动功能,可能会导致...
在Android开发中,ScrollView和ListView都是非常常见的视图组件。ScrollView是一个可以包含多个子视图,并允许用户滚动查看所有内容的容器。而ListView则用于显示大量的数据集,通常以垂直列表的形式展示,支持滚动...
在Android开发过程中,我们经常会遇到ScrollView与ListView或GridView组合使用时出现的滑动冲突问题。这类问题通常表现为:当ScrollView内部包含一个ListView或GridView时,用户滑动屏幕时可能无法正常滚动列表中的...
由于ListView和GridView都继承自ScrollView,所以在ScrollView中再嵌套ScrollView会导致高度计算的问题。这会使得内部的ScrollView无法正常工作,因为它无法确定自身应该多高。这个问题在界面元素多、数据量大的情况...
在Android开发中,ListView与ScrollView的使用经常会产生冲突,因为两者都是用来展示多行数据的控件,但它们的工作机制有所不同。ListView通过复用Item视图来提高性能,而ScrollView则将所有子视图一次性加载到内存...