如何让ListView和它上面的好多组件一起滑动
3个回答
展开全部
2种方法
1: 把listview上面的其他组件当作listview的item 但是这些item要特别的处理,因为是在listview的上面,所以视图再描绘的时候,你要根据实际组件的多少根据position来单独处理,因为其他的listview的item可能会有好几条。
2: listview外面包一层scrollview,这样的话就可以整体滑动了,看起来就好像和它上面的其他组件一起滑动了,但是要注意,listview和scrollview一起的时候可能会有冲突,要额外的对listview或者scrollview处理下,这个你自己百度了
1: 把listview上面的其他组件当作listview的item 但是这些item要特别的处理,因为是在listview的上面,所以视图再描绘的时候,你要根据实际组件的多少根据position来单独处理,因为其他的listview的item可能会有好几条。
2: listview外面包一层scrollview,这样的话就可以整体滑动了,看起来就好像和它上面的其他组件一起滑动了,但是要注意,listview和scrollview一起的时候可能会有冲突,要额外的对listview或者scrollview处理下,这个你自己百度了
推荐于2016-10-12 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517180
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
把你所有想一起动的控件放到一个scrollview下,然后listview用这个
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, mExpandSpec);
}
}
scrollview用这个
/**
* 解决ScrollView嵌套ViewPager出现的滑动冲突问题
*/
public class MyScrollView extends ScrollView {
View.OnTouchListener mGestureListener;
// 滑动距离及坐标
private float xDistance, yDistance, xLast, yLast;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
if(xDistance > yDistance){
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, mExpandSpec);
}
}
scrollview用这个
/**
* 解决ScrollView嵌套ViewPager出现的滑动冲突问题
*/
public class MyScrollView extends ScrollView {
View.OnTouchListener mGestureListener;
// 滑动距离及坐标
private float xDistance, yDistance, xLast, yLast;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
if(xDistance > yDistance){
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好是自定义listview来完成,原声的listview是很难完成一些复杂的动态布局的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询