Android 如何获得用户滚动的百分比?

Android 如何获得用户滚动的百分比?,android,scrollview,Android,Scrollview,我有一个滚动视图,里面有文本,底部有一个按钮。我想做的是根据用户完成的滚动百分比更改按钮上的文本。这是我的代码: public class Verbal extends Activity implements ScrollViewListener { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(sa

我有一个滚动视图,里面有文本,底部有一个按钮。我想做的是根据用户完成的滚动百分比更改按钮上的文本。这是我的代码:

public class Verbal extends Activity implements ScrollViewListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.verbal);
    ObservableScrollView scrollview = (ObservableScrollView) findViewById(R.id.scrollview);
    scrollview.setScrollViewListener(this);

}

@Override
public void onScrollChanged(ObservableScrollView scrollView, int x, int y,
        int oldx, int oldy) {
    // TODO Auto-generated method stub
    Button answer = (Button) findViewById(R.id.answernumber);

    int totalHeight = scrollView.getChildAt(0).getHeight();
    int p = (y/totalHeight)*100;

    if (p>3 && p<8)
        answer.setText("1");
    else if (p>8 && p<11)
        answer.setText("2");
    else if (p>11 && p<14)
        answer.setText("3");
    else if (p>14 && p<17)
        answer.setText("4");
    else if (p>17 && p<21) 
        answer.setText("5");
    else if (p>21 && p<25)
        answer.setText("6");
    else if (p>25 && p<29)
        answer.setText("7");
    else if (p>29 && p<31)
        answer.setText("8");
    else if (p>31 && p<35)
        answer.setText("9");
    else if (p>35 && p<39)
        answer.setText("10");
    else if (p>39 && p<45)
        answer.setText("11");
    else if (p>45 && p<50)
        answer.setText("12");
    else if (p>50 && p<56)
        answer.setText("13");
    else if (p>56 && p<62)
        answer.setText("14");
    else if (p>62 && p<67)
        answer.setText("15");
    else if (p>67 && p<72)
        answer.setText("16");
    else if (p>72 && p<78)
        answer.setText("17");
    else if (p>78 && p<83)
        answer.setText("18");
    else if (p>83 && p<86)
        answer.setText("19");
    else if (p>86)
        answer.setText("20");   




}

}
公共类动词扩展活动实现ScrollViewListener{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.verball);
ObservableScrollView scrollview=(ObservableScrollView)findViewById(R.id.scrollview);
scrollview.setScrollViewListener(此);
}
@凌驾
public void onScrollChanged(可观察滚动视图滚动视图,int x,int y,
int oldx,int oldy){
//TODO自动生成的方法存根
按钮应答=(按钮)findViewById(R.id.answernumber);
int totalHeight=scrollView.getChildAt(0.getHeight();
INTP=(y/总高度)*100;
如果(p>3&&p8&&p11&&p14&&p17&&p21&&p25&&p29&&p31&&p35&&p39&&p45&&p50&&p56&&p62&&p67&&p72&&p78&&p83&&p86)
答案:setText(“20”);
}
}

问题是按钮中的文本没有改变,因为最初“y”的值为零,所以“p”也为零。但当用户向下滚动时,“y”值和“p”值会发生变化。我需要随着“y”的变化不断地改变“p”的值。请以编程的方式帮助我做什么?

我认为您的问题是运行整数除法,因此p始终为0。 您必须按如下方式将其加倍:

 double p = ((double)y/(double)totalHeight)*100;

为什么需要这样做?我在滚动视图中有一组问题。我只是想根据用户阅读的问题来更改按钮上的数字文本。你读过这个()吗?也许它对你有帮助我想也许通过do-while循环我可以让它工作,但不知道如何使用它这是如何在java中使用do-while循环:这是do-while的维基百科:我使用int,因为我只想要整数部分(不带小数)的百分比。如果我有86.21%,我只想要86。那么你必须使用Math.round()。但是对于两个整数,你在这个除法中总是得到0,对于p也是正确的。double有效。现在我得到了。thanx dude