結局

HorizontalScrollView でスワイプっぽく 、結局、通常時はスクロールしないようにして、ページをめくるボタンを作って押したときだけ、smoothScrollTo でページを送ってやる形にしました。

うーん、壮絶なるムダ。

横シークバーを動かそうとしたときに、横スクロールのイベントと解釈されるのを回避するのは入れました。

((SeekBar)findViewById(R.id.seekBar)).setOnTouchListener(new OnTouchListener(){
  @Override
    public boolean onTouch(View arg0, MotionEvent arg1){
      if(arg1.getAction() == MotionEvent.ACTION_DOWN || arg1.getAction() == MotionEvent.ACTION_MOVE){
        ((HorizontalScrollView)findViewById(R.id.horizontalScrollView)).
requestDisallowInterceptTouchEvent(true);
      }
      return false;
    }
});

コレを入れたら、当然のことながら、シークバーの置かれていない HorizontalScorollView の余白部分でスクロールさせないとページが切り替わらない上に、スクロール(フリック)中にシークバーに指が掛かると、 HorizontalScorollView がイベントを判別しなくなっちゃうので、自分で作っておきながら多少イライラしちゃったもんで、UI を変更したわけです。
うむ、この辺は毎日がサンデー・プログラマーならではの柔軟性。
仕様書があってはこうは行くまい、ふふふ。

で、scrollTo だと瞬時にページが切り替わってしまうので、smoothScrollTo に変更というわけです。

通常時に、ScrollView をスクロールさせないのは、コチラのサイト様 を参考にしました。
ありがとうございます。

スポンサーサイト

コメント

非公開コメント