我有ViewPager
,其中包含两个片段。在我可以触摸某个地方的任何片段中,滑动以切换到另一个fragment
。其中一个片段包含一个列表。列表中的项目包含一个TextView
和一个ImageView
。问题是,如果您通过点击ImageView
开始拖动,则可以。但如果它来自TextView
,则ViewPager
永远不会知道拖动,因此“平滑切换”永远不会发生。
有任何线索吗?
修改
这张照片是为了展示我的GUI。如果已从TextViewE启动拖动,则不会开始拖动。
答案 0 :(得分:38)
这件事也困扰了我,但我找到了答案。
基本上,情况是:如果视图可以水平滚动,它会截取水平运动事件,而 ViewPager 则无法再处理它。
由于 API Level 14 TextViews具有 android:scrollHorizontally 属性(以及 setHorizontallyScrolling(boolean)方法),如果设置为true,导致TextView截取水平滚动运动事件。
您可以在XML中或在代码中将其设置为false,但注意: android:singleLine 属性强制 android:scrollHorizontally 设置为 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);
}