14

我有一个ViewPager包含两个片段的。在我可以触摸的任何片段中,滑动以切换到另一个fragment。其中一个片段包含一个列表。列表中的项目包含一TextView和一ImageView。问题是,如果您从点击 开始拖动ImageView,就可以了。但是,如果它来自TextView,则 永远不会知道阻力ViewPager,因此“平滑切换”永远不会发生。

对此有任何线索吗?

编辑

这张图片是为了展示我的 GUI 是怎样的。如果拖动是从 TextViewE 开始的,它不会开始。 在此处输入图像描述

4

2 回答 2

40

这件事也困扰着我,但我已经设法找到了答案。

基本上,情况是:如果视图可以水平滚动,它会拦截水平运动事件,ViewPager无法再处理它。

由于API 级别 14 TextViews 具有android: scrollHorizo​​ntally属性(和setHorizo​​ntallyScrolling(boolean)方法),如果设置为 true,则会导致 TextView 拦截水平滚动运动事件。

您可以在 XML 或代码中将其设置为 false,但请注意android:singleLine属性会强制将android :scrollHorizo​​ntally设置为true非常棘手的一点!但幸运的是,您通常可以安全地将单行属性替换为android:maxLines="1"和必要的 ellipsize值。

祝你好运!

于 2013-08-11T12:20:53.857 回答
0

您可以覆盖 TextView 的 onTouchEvent():

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_MOVE) {
        return false;
    }

    return super.onTouchEvent(event);
}
于 2013-06-05T04:22:58.913 回答