我正在尝试使用 aSeekBar
来表示两条信息:
- 录音的阈值,用户可以设置。
- 用户无法设置的传入音频电平。
我想使用用户触摸输入来更改 的ScrollBar
,SeekBar
表示所需的阈值。进度颜色条将由我以编程方式设置以显示音频级别,与ScrollBar
位置无关,并且不受用户输入的影响。
我试过使用SeekBar.setScrollX(int)
and SeekBar.setScrollY(int)
,但是文档说这些调用会使视图无效,并且当调用这些函数之一时程序确实会崩溃。
这是触摸事件代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled()) {
return false;
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
setProgress(getMax() - (int) (getMax() * event.getY() / getHeight()));
setScrollX(50); // this causes a MethodNotFoundError
onSizeChanged(getWidth(), getHeight(), 0, 0);
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}
这是我正在使用的简单测试 onScrollChanged 函数。请注意,如果没有被覆盖,NoSuchMethodFoundError 仍然会发生。
@Override
public void onScrollChanged(int x, int y, int x1, int y1) {
super.onScrollChanged(0, 0, 0, 0);
}