0

onFlingでスワイプする機能を使用していScrollViewます。私が直面している問題は、上から下にスワイプ/スクロールすると、タブが右/左にスワイプされることです。そのため、スクロール時に左右のスワイプ機能が機能しないようにする必要があります。

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        final RelativeLayout detail = (RelativeLayout) findViewById(R.id.layout_detail);
        final RelativeLayout photo = (RelativeLayout) findViewById(R.id.layout_detail_photo);
        final RelativeLayout pod = (RelativeLayout) findViewById(R.id.layout_detail_pod);
        final ToggleButton btn_detail = (ToggleButton) findViewById(R.id.btn_detail);
        final ToggleButton btn_pod = (ToggleButton) findViewById(R.id.btn_pod);
        final ToggleButton btn_photo = (ToggleButton) findViewById(R.id.btn_photo);
        // right to left swipe

        if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

            if ((detail.getVisibility() == View.VISIBLE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.VISIBLE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(true);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.VISIBLE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.VISIBLE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(true);
                btn_pod.setSelected(false);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.VISIBLE)) {
                detail.setVisibility(View.VISIBLE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(false);
                btn_detail.setSelected(true);
            }
        }
        // left to right swipe
        else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

            if ((detail.getVisibility() == View.VISIBLE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.VISIBLE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(true);
                btn_pod.setSelected(false);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.VISIBLE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.VISIBLE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(true);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.VISIBLE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.VISIBLE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(false);
                btn_detail.setSelected(true);
            }
        }
        return true;
    }
4

2 に答える 2

0

私のお勧めは、左右にスワイプしてスクロールできるページとしてスクロール ビューを挿入できるViewPagerを使用することです。ビュー ページャーを使用して、リストビューを返すPagerAdapterを作成しました。あなたの場合、スクロールビューを返すことができます。ビューページャーに挿入する必要があるページャーのベースとして機能するコードをいくつか添付しました。

public class ViewpagerAdapter extends PagerAdapter {


private Context mContext;

public ViewpagerListviewsAdapter(Context mContext) {

    this.mContext = mContext;
}
    @Override
    public Object instantiateItem(ViewGroup group, int position) {


            ListView lView = new ListView(mContext);
                            group.addView(lView);
            return lView;



    }

    @Override
    public void destroyItem(ViewGroup group, int position, Object object) {

        View view = (View) object;
        group.removeView(view);
        view = null;

    }

    @Override
    public int getCount() {
        return (number of views in pager);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {

        return view==object;

    }


}
于 2013-07-18T01:14:46.867 に答える