2012-05-05 128 views
3

我將Horizo​​ntalScrollView作爲子視圖使用長視圖,因此Horizo​​ntalScrollView是可滾動的並且可以水平滾動其子級。 有沒有可能阻止?我不希望用戶能夠滾動視圖。Android Horizo​​ntalScrollView禁用滾動

+1

滾動視圖是滾動!如果您不想滾動用戶,請選擇除使用scrollView以外的其他方式。您可以改用動畫。 –

回答

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> 
11

我的建議是使用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; 
    } 
} 
+0

這對我有效,謝謝! – jonassvensson

+0

它禁用觸摸事件,單擊不工作。 – user3304007

+0

拯救了我的一天!其實,我花了一個小時看看如何禁用TabLayout中的小滾動。但我完全忘了它是一種scrollview!這也適用於我的情況。 –

相關問題