【发布时间】:2013-08-06 16:22:01
【问题描述】:
在这篇文章中: Android: ScrollView in flipper
建议为 ScrollView 设置一个 onTouchnListener,它是 ViewFlipper 的子项的一部分。
我这样做了,也使用了相同的逻辑:
public class MainActivity extends Activity implements OnGestureListener {
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
this.gestureDetector = new GestureDetector(this);
// ..
createViews();
}
private void createViews() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
displayView = inflater.inflate(R.layout.viewflippercontent, null);
ScrollView scrollView = (ScrollView) displayView
.findViewById(R.id.scrollview);
scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
Log.d("ScrollViewOnTouchListener", "true");
return true;
} else {
Log.d("ScrollViewOnTouchListener", "false");
return false;
}
}
});
// ..
}
@Override
public boolean onTouchEvent(MotionEvent me) {
Log.d("onTouchEvent", "onTouchEvent");
return gestureDetector.onTouchEvent(me);
}
public boolean onDown(MotionEvent e) {
return true;
}
public void onLongPress(MotionEvent e) {
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d("onScroll", "onScroll");
return false;
}
public void onShowPress(MotionEvent e) {
}
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
}
当我在 ViewFlipper 的子项中滚动时,我在 LogCat 中得到以下信息:
08-07 21:57:14.581:调试/ScrollViewOnTouchListener(4586):真
08-07 21:57:14.591:调试/ScrollViewOnTouchListener(4586):假
08-07 21:57:14.622:调试/ScrollViewOnTouchListener(4586):假
08-07 21:57:14.646: 调试/onScroll(4586): onScroll
08-07 21:57:14.646: 调试/ScrollViewOnTouchListener(4586): false
08-07 21:57:14.671: 调试/onScroll(4586): onScroll
08-07 21:57:14.671: 调试/ScrollViewOnTouchListener(4586): false
08-07 21:57:14.704: 调试/onScroll(4586): onScroll
08-07 21:57:14.704:调试/ScrollViewOnTouchListener(4586):假
08-07 21:57:14.731: 调试/onScroll(4586): onScroll
08-07 21:57:14.731: 调试/ScrollViewOnTouchListener(4586): false
08-07 21:57:14.761: 调试/onScroll(4586): onScroll
08-07 21:57:14.761:调试/ScrollViewOnTouchListener(4586):假
08-07 21:57:14.791: 调试/onScroll(4586): onScroll
08-07 21:57:14.791:调试/ScrollViewOnTouchListener(4586):假
08-07 21:57:14.791:调试/ScrollViewOnTouchListener(4586):真
虽然内容比屏幕大,但应该可以滚动,但不会发生滚动。
我做错了什么?
【问题讨论】:
标签: android scrollview viewflipper touch-event