こんにちは、私はカスタム ScrollView 内に GridView を持っています
これが私が使用しているコードです public class CustomScrollView extends ScrollView {
public CustomScrollView(Context context) {
super(context);
}
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
Log.i("VerticalScrollview", "onInterceptTouchEvent: DOWN super false" );
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_MOVE:
return false; // redirect MotionEvents to ourself
case MotionEvent.ACTION_CANCEL:
Log.i("VerticalScrollview", "onInterceptTouchEvent: CANCEL super false" );
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
Log.i("VerticalScrollview", "onInterceptTouchEvent: UP super false" );
return false;
default: Log.i("VerticalScrollview", "onInterceptTouchEvent: " + action ); break;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
Log.i("VerticalScrollview", "onTouchEvent. action: " + ev.getAction() );
return true;
}
}
そしてグリッドビューのために、私はこのような touchListener を追加しています
gridview.setOnTouchListener(new GridView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
scroll.onTouchEvent(event);
return false;
}
});
scroll は、上記で指定した CustomScrollView への参照です
CustomScrollView scroll=(CustomScrollView)findViewById(R.id.page);
私が使用しているグリッド ビューは、カレンダーを表示することです。やりたいことは、グリッドビューに触れるたびに、イベントを CustomScrollView に転送して、CustomScrollView にスクロールできるようにすることです。
それは機能していますが、問題は、グリッドビューの上または下の位置からスクロールしようとすると、GridView からスクロールしようとすると画面がちらつくことです。
私は何かが欠けていますか?1週間以来、それに取り組んでいる深刻なトラブルで私を助けてください