2017-02-28 7 views
0

私は、タブレットのスタイラスなしでうまく動作しているカスタムスクロールビューを書いています。 タブレットスタイラスを使用する場合、このcustomScrollviewにより、スクロールが無効になっていてもスタイラスはスクロールを実行できます。Scrollviewによるスタイラススクロールを禁止する方法はありますか?

public class CustomScrollView extends ScrollView { 

    private boolean enabled = false; 

    public CustomScrollView(Context context) { 
     super(context); 
    } 

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

    public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     return enabled; 
    } 

    public void setEnabled(boolean enabled) { 
     this.enabled = enabled; 
    } 

    public boolean getEnabled() { 
     return this.enabled; 
    } 
} 

答えて

0

オーバーライドonInterceptHoverListenerはトリックをしました。 スクロールビューを有効にすると、スタイラスオンホーバースクロールが処理されます。スクロールビューが有効になっていれば、それは処理されません。

public class CustomScrollView extends ScrollView { 

     private boolean enabled = false; 

     public CustomScrollView(Context context) { 
      super(context); 
     } 

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

     public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { 
      super(context, attrs, defStyleAttr); 
     } 

     @Override 
     public boolean onInterceptTouchEvent(MotionEvent ev) { 
      return enabled; 
     } 

     public void setEnabled(boolean enabled) { 
      this.enabled = enabled; 
     } 

     @Override 
     public boolean onInterceptHoverEvent(MotionEvent event) { 
    if (this.enabled) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 

} 

     public boolean getEnabled() { 
      return this.enabled; 
     } 
    } 
0

あなたはこれを試してみることができます。

if (MotionEvent.getToolType(TOOL_TYPE_STYLUS)) 
{ 
// disable scrollview 
} 
+0

いいえいいえ解決法@Rick。私の問題はスクロールビューではありません。私はあなたがタブレットでスタイラスを使ったことを願っています。したがって、スタイラスをホーム画面の終点に向けたとき、次の画面に移動します。スクロールビューでも同じことが起こります。何かが画面上でスクロール可能な場合は、最後にスタイラスを指すとスクロールします。私はこれが起こるのを止めたい。スクロールビューが100%無効になっているためです。しかし私がスタイラスを最後まで指すと、スクロールが始まります。 – HourGlass

0

これを試してみてください:

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    if (ev.getToolType(TOOL_TYPE_STYLUS)) { 
     // also, here you should check if it should be disabled at this point 
     return !enabled; 
    } else { 
     return enabled; 
    } 
} 
+0

それを行う正しい方法ではありません。あなたはリックのコメントセクションを参照してください。@Dragoslav – HourGlass

+0

ああ、すみません、私の悪いです。 –

関連する問題