2017-10-11 4 views
0

Ich war angepasste Android-Standard-Suchleiste in vertikal zeigen und in Fragmenten verwenden gehen ein Feedback von Benutzer erhalten.Seek Bar Fortschritt wird nicht aktualisiert nach Activity/Fragment Relaunch

Nach dem ersten Start wird es ordnungsgemäß angezeigt. Aber sobald ich mein erstes Feedback eingereicht habe, starte ich die Aktivität mit Fragmenten neu, die meine angepasste vertikale Suchleiste enthält.

Zu diesem Zeitpunkt kommt der Daumen in der vertikalen Suchleiste auf "0", aber der Fortschritt wird nicht auf "0" gebracht und zeigt einen gewissen Fortschritt. :(

Below Ich füge meine Vertical Suche bitte Barcode mir empfehlen, wenn ich irgend etwas verpasst.

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); 
    } 
} 

Antwort

0

Endlich habe ich die Lösung für mein Problem. In .xml während vertikale seekBar Schaffung I verwendet android: progressDrawable = "@ ziehbar/suchen" aber in seek.xml ich vergaß Titel als

item android:id="@android:id/secondaryProgress", 
item android:id="@android:id/background" and 

Artikel android zu erklären: id = "@ android: id/progress"

. 210
Verwandte Themen