ViewPager中的TextView拦截触摸事件

时间:2013-03-18 06:16:09

标签: android view textview android-viewpager

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

有任何线索吗?

修改

这张照片是为了展示我的GUI。如果已从TextViewE启动拖动,则不会开始拖动。 enter image description here

2 个答案:

答案 0 :(得分:38)

这件事也困扰了我,但我找到了答案。

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

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

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

祝你好运!

答案 1 :(得分:0)

你可以覆盖TextView的onTouchEvent():

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

    return super.onTouchEvent(event);
}