我的问题其实很简单,我无法找到办法在我的问题中提到的。我尝试使用AsyncTask,它根本不起作用,也使用了按钮的OnFocusChange事件......我现在有点绝望了。
希望你们能帮忙! :)
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 :(得分:1)
按下按钮后,您可以调用smoothScrollBy
或smoothScrollTo
方法。但是,您必须根据您的要求计算滚动视图的数量。希望这可以帮助。
https://developer.android.com/reference/android/widget/ScrollView.html#smoothScrollBy(int,%20int)
答案 1 :(得分:1)
这是我的方法。
微调计时器间隔和scrollBy值y以满足您的要求。