7

私は子として長いビューを持つHorizo​​ntalScrollViewを持っているので、Horizo​​ntalScrollViewはスクロール可能で、その子を水平にスクロールできます。それをブロックする可能性はありますか?ユーザーがビューをスクロールできるようにしたくありません。

4

2 に答える 2

19

私の提案は、次のようにOnTouchListenerを使用することです。

onCreateメソッドで


HorziontalScrollView scrollView= (HorizontalScrollView)findViewById(R.id.scrollView);
scrollView.setOnTouchListener(new OnTouch());

クラスがあります:


private class OnTouch implements OnTouchListener
{
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    return true;
    }
}
于 2012-05-07T11:25:42.953 に答える
2

わかりました、それを実装する方法を見つけました。

独自の Horizo​​ntalScrollView を作成し、onTouchEvent メソッドをオーバーライドするだけです

public class MyHSV extends HorizontalScrollView {

    public MyHSV(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

    public MyHSV(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public MyHSV(Context context) {
        super(context);
        init(context);
    }

    void init(Context context) {
        // remove the fading as the HSV looks better without it
        setHorizontalFadingEdgeEnabled(false);
        setVerticalFadingEdgeEnabled(false);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        // Do not allow touch events.
        return false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        // Do not allow touch events.
        return false;
    }

}

そして、xmlファイルで

<pathToClass.MyHSV xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:scrollbars="none"
    android:id="@+id/myHSV>

</pathToClass.MyHSV>
于 2012-05-05T15:48:56.583 に答える