2016-04-09 12 views
0

Ich baue eine App, in der ich einen Arc SeekBar habe, und ich versuche, die TextView zu folgen SeekBar thumb.Textview folgt nicht Seekbar Thumb

Mein Code:

seekBar = (ArcSeekBar)findViewById(R.id.seekArc); 
     textView = (TextView)findViewById(R.id.myText); 
     seekBar.setOnSeekArcChangeListener(new ArcSeekBar.OnSeekArcChangeListener() { 
      @Override 
      public void onProgressChanged(ArcSeekBar seekArc, int progress, boolean fromUser) { 
       int x = seekBar.getmTranslateX() - seekBar.getmThumbXPos()-100; 
       int y = seekBar.getmTranslateY() - seekBar.getmThumbYPos()-100; 

       textView.setX(x); 
       textView.setY(y); 
       textView.setText(String.valueOf(progress)); 
      } 

      @Override 
      public void onStartTrackingTouch(ArcSeekBar seekArc) { 

      } 

      @Override 
      public void onStopTrackingTouch(ArcSeekBar seekArc) { 

      } 
     }); 

Und wie i meeassure die seekbar X- und Y-Positionen.

@Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 

     final int height = getDefaultSize(getSuggestedMinimumHeight(), 
       heightMeasureSpec); 
     final int width = getDefaultSize(getSuggestedMinimumWidth(), 
       widthMeasureSpec); 
     final int min = Math.min(width, height); 
     float top = 0; 
     float left = 0; 
     int arcDiameter = 0; 

     mTranslateX = (int) (width * 0.5f); 
     mTranslateY = (int) (height * 0.5f); 

     arcDiameter = min - getPaddingLeft(); 
     mArcRadius = arcDiameter/2; 
     top = height/2 - (arcDiameter/2); 
     left = width/2 - (arcDiameter/2); 
     mArcRect.set(left, top, left + arcDiameter, top + arcDiameter); 

     int arcStart = (int) mProgressSweep + mStartAngle + mRotation + 90; 
     mThumbXPos = (int) (mArcRadius * Math.cos(Math.toRadians(arcStart))); 
     mThumbYPos = (int) (mArcRadius * Math.sin(Math.toRadians(arcStart))); 

     setTouchInSide(mTouchInside); 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 

Das Ergebnis ist:

enter image description here

Irgendwelche Ideen? Ich möchte, dass der Text immer über dem Daumen ist.

Antwort

2

the scope of the element

yout zentralen Punkt haben muss. und die Textview Kreisgröße muss größer sein als anderer Kreis

enter image description here

+0

können Sie ein Codebeispiel teilen? –