我试图在某个seekBar到达动态点后停止移动(通过减去setMax()值和其他seekBar.getProgress()计算)。我尝试使用onTouchEvent(),但无法停止条形的移动并手动设置seekBar.setProgress(),但它只会跳到该点并继续用手指移动。
sb1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
sb1.setMax(Integer.parseInt(et.getText().toString()));
if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress())
sb1.setProgress(progress);
tv1.setText(String.valueOf(progress));
}
});
sb2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
sb2.setMax(Integer.parseInt(et.getText().toString()));
if (progress >= Integer.parseInt(et.getText().toString()) - sb1.getProgress() - sb3.getProgress())
sb2.setProgress(progress);
tv2.setText(String.valueOf(progress));
}
});
Run Code Online (Sandbox Code Playgroud)
请帮忙
你有
if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress())
sb1.setProgress(progress);
Run Code Online (Sandbox Code Playgroud)
在您的sb1变更监听器中。但这并没有真正的意义,因为progress已经有了的进步sb1。我认为您应该更改此:
sb1.setProgress(progress);
Run Code Online (Sandbox Code Playgroud)
至:
sb1.setProgress(Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress());
Run Code Online (Sandbox Code Playgroud)
我为这一进展所获得的价值来自于您的if状况。基本上,当进度大于该值时,只需将其设置为该值即可。因此,这种方式不能将其拖到该点之外。
对其他听众也做同样的事情。
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |