2012-03-02 22 views
4

私はすでに試した:scrollViewを無効にするにはどうすればよいですか?

scrollView.setEnable(false); 

scrollView.setOnTouchListener(null); 

scrollView.requestDisallowInterceptTouchEvent(true); 

のが、これらのどれも働いていない...私は理由を理解することができない、それを行うための他の方法はありますか? XMLで

scrollView:

<ScrollView 
    android:id="@+id/mainPage_scroll" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:focusableInTouchMode="true" 
    android:layout_below="@+id/tabBar" > 

</ScrollView> 

答えて

4

今後の参考のために、私は「ScrollView内の描画可能エリア」のために使用はるかに簡単な解決策は、親に伝えるために、チェーンまでに干渉しないrequestDisallowInterceptTouchEventを使用することですタッチアクション。

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    if (event.getAction() == MotionEvent.ACTION_DOWN) 
    { 
     this.parent.requestDisallowInterceptTouchEvent(true); 
     // etc... 
    } 
    else if(event.getAction() == MotionEvent.ACTION_MOVE) 
    { 
     // etc... 
    } 
    else if (event.getAction() == MotionEvent.ACTION_UP) 
    { 
     this.parent.requestDisallowInterceptTouchEvent(false); 
     // etc... 
    } 
    return true; 
} 
+0

私はこのようなコメントをどこからでも探しています。ありがとうございます。 –

3

は直接スクロールするscrollviewを停止する方法が、uはありません。この場合、親がScrollView内部LinearLayoutであるだけでなく、他のコンポーネントにネストすることができ描画可能なビュー、上

例えば

scrollview.setOnTouchListener(new OnTouchListener() 
{ 

    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 

    return !enable; 
    } 
}); 

あなたがtrueに変数を有効に設定したときに、それは、スクロールが開始されますと、あなたはfalseに設定すると、それはスクロールを停止:他の方法 ようにそれを行うことができます。