首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Textview不遵循Seekbar Thumb

Textview不遵循Seekbar Thumb
EN

Stack Overflow用户
提问于 2016-04-09 20:36:01
回答 1查看 481关注 0票数 0

我正在建立一个应用程序,其中我有一个弧形SeekBar,我试图使TextView跟随SeekBar拇指。

我的代码:

代码语言:javascript
复制
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) {

            }
        });

以及如何确定搜索栏的X和Y位置。

代码语言:javascript
复制
@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);
    }

结果是:

有什么想法吗?我希望文本总是在拇指上方。

EN

回答 1

Stack Overflow用户

发布于 2016-04-09 22:08:42

你必须有中心点。并且文本视图圆的大小必须大于其他圆

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36516840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档