我正在构建一个Android Wear应用程序,我想将其呈现为几个可以水平滑动的页面。
为此,我使用了一个GridViewPager和关联的FragmentGridPagerAdapter,它被硬连接到使用单行。这对于在tiles之间水平滑动是很好的,但是在我的一个片段中,我想使用一个WearableListView来允许用户在几个操作之间进行选择。不幸的是,这并不起作用,因为它似乎是GridViewPager阻止任何滑动进入WearableListView。有没有人知道是否有一种方法可以使用所描述的组件来完成这项工作?
我也试过使用标准的ViewPager,这使得WearableListView可以很好地滚动,但水平滑动会变得很松散,而且你经常需要滑动几次才能移动视图分页。
发布于 2014-07-30 02:20:42
我也遇到了同样的事情。仅仅设置一行或者覆盖canscrollvertically()是行不通的。我找到的唯一选择就是覆盖触摸事件,就像Neevek的答案:HorizontalScrollView within ScrollView Touch Handling
这对我很有效:
private float xDistance, yDistance, lastX, lastY;
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
setDownPosition(ev);
break;
case MotionEvent.ACTION_MOVE:
if (isVerticalScroll(ev))
return false;
}
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
setDownPosition(ev);
break;
case MotionEvent.ACTION_MOVE:
if (isVerticalScroll(ev))
return false;
}
return super.onTouchEvent(ev);
}
private void setDownPosition(MotionEvent ev){
xDistance = yDistance = 0f;
lastX = ev.getX();
lastY = ev.getY();
}
private boolean isVerticalScroll(MotionEvent ev){
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - lastX);
yDistance += Math.abs(curY - lastY);
lastX = curX;
lastY = curY;
if(xDistance < yDistance) {
return true;
}
return false;
}
https://stackoverflow.com/questions/24804371
复制相似问题