2017-11-05 3 views
0

xmlにHorizo​​ntalScrollViewを追加しました。ボタンをクリックしてスクロールを無効にし、別のボタンをクリックして再度有効にしたいとします。Horizo​​ntalScrollViewのスクロールを無効にする方法ボタンをクリックしてもう一度ボタンを有効にするにはどうすればいいですか?

ボタンクリックでスクロールを無効にすることはできますが、スクロールを再び有効にする方法はわかりません。

以下のコードは、スクロールを無効にする方法です。

class OnTouch implements View.OnTouchListener 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     return true; 
    } 
} 

私はのonCreateメソッド内の上記のコードを追加し、その後

final HorizontalScrollView scrollView = (HorizontalScrollView)findViewById (R.id.horizontalScrollView); 
    Button stop = (Button)findViewById(R.id.stop); 
    stop.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      scrollView.setOnTouchListener(new OnTouch()); 
     } 
    }); 

を上記のクラスを追加し。別のボタン(多分「スクロール」)を追加したいのですが、そのボタンをもう一度スクロールできるようにします。

答えて

1

これはどうですか(テストしていないので、タイプミスがある可能性があります)。

class OnTouch implements View.OnTouchListener { 
    public boolean intercept = false; 
    @Override public boolean onTouch(View v, MotionEvent event) { 
     return intercept; 
} } 

final OnTouch listener = new OnTouch()); 
final HorizontalScrollView scrollView = (HorizontalScrollView)findViewById (R.id.horizontalScrollView); 
scrollView.setOnTouchListener(listener); 
Button stop = (Button)findViewById(R.id.stop); 
stop.setOnClickListener(new View.OnClickListener() { listener.intercept=true}); 
Button start = (Button)findViewById(R.id.start); 
start.setOnClickListener(new View.OnClickListener() { listener.intercept=false}); 
+0

それは働きました!どうもありがとう!! – ria

0

1に - あなたButtonに関連onClickListener関数で:

A)scrollView.setOnTouchListener(new OnTouch())

Bを除去する)スクロールが有効にされているかどうかを示すために、例えばbooleanscrollEnabled)を切り替えます。

2 - あなたのScrollViewクラスでは、onTouchEvent関数をオーバーライドし、その中にこれを置く:

if(scrollEnabled){ 
     return(false); 
    else { 
     return(true); 
    } 
関連する問題