Kostas Drak
Kostas Drak

Reputation: 3260

Textview does not follow Seekbar Thumb

I am building an app in which i have a Arc SeekBar and i am trying to make the TextView to follow SeekBar thumb.

My 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) {

            }
        });

And how i meeassure the seekbar X and Y positions.

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

The result is:

enter image description here

Any ideas? I want the text to be above the thumb always.

Upvotes: 0

Views: 538

Answers (1)

Dariush Fathi
Dariush Fathi

Reputation: 1695

the scope of the element

yout must to have central point . and the textview circle size must be bigger than other circle

enter image description here

Upvotes: 2

Related Questions