Seek Bar活动/片段重新启动后进度未更新
问题描述:
我是自定义android默认查找栏以垂直显示并在片段中使用从用户获取一些反馈。Seek Bar活动/片段重新启动后进度未更新
第一次启动后显示正常。但是,一旦我提交了我的第一个反馈,我将重新启动包含我的自定义垂直寻找栏的片段。
那时垂直Seekbar中的拇指即将到达“0”,但进度不会到达“0”并显示一些进展。 :(
下面我加入我的垂直搜索栏代码请建议我,如果我错过任何东西。
public class VerticalSeekBar extends SeekBar {
private int mLastProgress = 0;
private OnSeekBarChangeListener mOnChangeListener;
public VerticalSeekBar(Context context) {
super(context);
}
public VerticalSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public synchronized int getMaximum() {
return getMax();
}
@Override
protected void onDraw(Canvas c) {
c.rotate(-90);
c.translate(-getHeight(), 0);
super.onDraw(c);
}
@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(heightMeasureSpec, widthMeasureSpec);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(h, w, oldh, oldw);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled()) {
return false;
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (mOnChangeListener != null) {
mOnChangeListener.onStartTrackingTouch(this);
}
setPressed(true);
setSelected(true);
break;
case MotionEvent.ACTION_MOVE:
super.onTouchEvent(event);
int progress = getMax() - (int) (getMax() * event.getY()/getHeight());
// Ensure progress stays within boundaries
if (progress < 0) {
progress = 0;
}
if (progress > getMax()) {
progress = getMax();
}
setProgress(progress); // Draw progress
if (progress != mLastProgress) {
// Only enact listener if the progress has actually changed
mLastProgress = progress;
if (mOnChangeListener != null) {
mOnChangeListener.onProgressChanged(this, progress, true);
}
}
onSizeChanged(getWidth(), getHeight(), 0, 0);
setPressed(true);
setSelected(true);
break;
case MotionEvent.ACTION_UP:
if (mOnChangeListener != null) {
mOnChangeListener.onStopTrackingTouch(this);
}
setPressed(false);
setSelected(false);
break;
case MotionEvent.ACTION_CANCEL:
super.onTouchEvent(event);
setPressed(false);
setSelected(false);
break;
}
return true;
}
public synchronized void setMaximum(int maximum) {
setMax(maximum);
}
@Override
public void setOnSeekBarChangeListener(OnSeekBarChangeListener onChangeListener) {
this.mOnChangeListener = onChangeListener;
}
public synchronized void setProgressAndThumb(int progress) {
setProgress(progress);
onSizeChanged(getWidth(), getHeight(), 0, 0);
if (progress != mLastProgress) {
mLastProgress = progress;
if (mOnChangeListener != null) {
mOnChangeListener.onProgressChanged(this, progress, true);
}
}
}
public synchronized void setMyProgress(int progress) {
setProgress(progress);
}
}
答
最后我得到了解决我的问题。 在.XML,同时创造垂直搜索栏我用机器人:progressDrawable = “@绘制/寻求”但seek.xml我忘了申报职称的
item android:id="@android:id/secondaryProgress",
item android:id="@android:id/background" and
项目机器人:ID = “@机器人:ID /进度”
。 210