2016-05-26 11 views
1

私の問題はかなり単純ですが、実際には私の質問には何が言及されているのかを見つける方法がありませんでした。私はボタンのOnFocusChangeイベントでも全く動作しなかったAsyncTaskを試してみました...私は今は少し切望しています。ボタンを押しながらScrollViewをスクロールさせる方法は?

皆さん、お手伝いをしてくれることを願っています! :)

AsyncTaskバージョン:

private void creationVoid(){ 
    (...) 
    btScrollDown.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getAction() == MotionEvent.ACTION_DOWN) 
       downPressed = true; 
      if(event.getAction() == MotionEvent.ACTION_UP) 
       downPressed = false; 
      new ScrollDownTask().execute(); 
      return true; 
     } 
    }); 
(...) 
} 


private void scrollDown(){ 
    btScrollUp.setVisibility(View.VISIBLE); 
    scrollView.scrollTo(scrollView.getScrollX(), scrollView.getScrollY() + 15); 
    if(scrollView.getScrollY() == scrollView.getChildAt(scrollView.getChildCount()-1).getBottom() - 763) { 
     btScrollDown.setVisibility(View.GONE); 
    } 
} 

private class ScrollDownTask extends AsyncTask<String, Void, String>{ 
    @Override 
    protected String doInBackground(String... params) {return null;} 

    @Override 
    protected void onPostExecute(String s) { 
     while(downPressed) 
      scrollDown(); 
    } 
} 

OnFocusChangeバージョン:

private void creationVoid(){ 
    (...) 
    btScrollDown.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      while(hasFocus) 
       scrollDown(); 
     } 
    }); 
    (...) 
} 
+0

これまでに試したことのコードを追加してください。 – yennsarah

+0

いくつかのコードを追加;) – ArteFact

答えて

1

ボタンを押すと、あなたがsmoothScrollBysmoothScrollToメソッドを呼び出すことができます。ただし、ビューをスクロールするには、要件に基づいて計算する必要があります。お役に立てれば。

https://developer.android.com/reference/android/widget/ScrollView.html#smoothScrollBy(int,%20int)

+0

私は繰り返してスクロールしなければならないので分かりませんが、これは主な問題ですが、これは共有のために別の目的のために役立ちます! – ArteFact

+0

このhttp://stackoverflow.com/questions/13737754/put-the-scroll-view-under-the-up-and-down-buttonをご覧ください。あなたが望むものに非常に近いと思われます。 –

1

これは私のアプローチです。

    は、あなたがボタンを押すと、タイマーを起動し、ボタン
  • からタッチを持ち上げたときにタイマー火力方法でタイマーをキャンセルし、一定値(Y)でスクロール

タイマー間隔とscrollBy値yを微調整して要件に合わせます。

+0

interrestingと思われますが、いくつかのコードを追加できますか? – ArteFact

関連する問題