1

我正在尝试使用 aSeekBar来表示两条信息:

  1. 录音的阈值,用户可以设置。
  2. 用户无法设置的传入音频电平。

我想使用用户触摸输入来更改 的ScrollBarSeekBar表示所需的阈值。进度颜色条将由我以编程方式设置以显示音频级别,与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);
}
4

0 回答 0