我有一个滚动视图,其中包含文本,底部有一个按钮。我想要做的是根据用户滚动的百分比更改按钮上的文本。这是我的代码:
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");
}
}
问题是文本没有在按钮中改变,因为最初'y'的值为零,所以'p'也为零。但是当用户向下滚动'y'值时,'p'值会改变。我需要不断改变'p'的值作为'y'的变化。请以编程方式帮助我做什么?
答案 0 :(得分:3)
我认为您的问题是您正在运行整数除法,因此p始终为0。 你必须把它变成这样的双倍:
double p = ((double)y/(double)totalHeight)*100;