我有一个(自定义)SeekBar
嵌套在RelativeLayout
和LinearLayout
中,它显示为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版本。
答案 0 :(得分:0)
它有点晚了但我在SeekBar
ListView
接收MotionEvent
ACTION_CANCEL
移动并到达SeekBar
没有放开触摸。
问题在于,每次notifyDataSetChanged
调用SeekBar
时,我都会更改一些数据并在列表适配器上调用onProgressChanged
。
解决方案:避免在notifyDataSetChanged
中调用onProgressChanged
,更改您的数据,并在notifyDataSetChanged
的{{1}}函数中调用onStopTrackingTouch
。
注意:在我的列表适配器中,我还会在SeekBar.OnSeekBarChangeListener
的每次调用中更改TextView
的文字,但不会导致任何问题。