SeekBar移动/拖动不起作用

时间:2016-03-22 12:16:25

标签: android listview seekbar

我有一个(自定义)SeekBar嵌套在RelativeLayoutLinearLayout中,它显示为ListView的项目。现在,只要我在TextView更新setText(通过onProgressChanged),我就会收到ACTION_CANCEL并且我在SeekBar上移动/拖动{1}}已取消。如果不更新TextView,则可以正常工作。

知道问题是什么?

layout.xml的内容:

<LinearLayout>
    <LinearLayout>
        <RelativeLayout>

            <TextView />

            <SeekBar />
        </RelativeLayout>
    </LinearLayout>
</LinearLayout>

自定义SeekBar中的代码:

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) {
    if (fromUser) {
        mProgressTextView.setText(String.valueOf(progress));
    }
}

顺便说一句:问题只发生在Android 6.适用于prvious版本。

1 个答案:

答案 0 :(得分:0)

它有点晚了但我在SeekBar ListView接收MotionEvent ACTION_CANCEL移动并到达SeekBar没有放开触摸。

问题在于,每次notifyDataSetChanged调用SeekBar时,我都会更改一些数据并在列表适配器上调用onProgressChanged

解决方案:避免在notifyDataSetChanged中调用onProgressChanged,更改您的数据,并在notifyDataSetChanged的{​​{1}}函数中调用onStopTrackingTouch

注意:在我的列表适配器中,我还会在SeekBar.OnSeekBarChangeListener的每次调用中更改TextView的文字,但不会导致任何问题。