Seekbar with tooltip android

时间:2013-10-16 06:38:34

标签: android seekbar

enter image description here

大家好,

我正在尝试使用工具提示自定义android搜索栏,就像给定的图像一样。 有没有办法用拇指在搜索栏中添加textview。或任何其他想法

由于

5 个答案:

答案 0 :(得分:15)

我们可以通过获得拇指的界限来做到这一点。并在seekbar的progressChanged上设置textview的x

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) {

    mDistance.setText("" + AppConstants.getDistance() + " miles");
    //Get the thumb bound and get its left value
    int x = mSeekBar.getThumb().getBounds().left;
             //set the left value to textview x value
    mDistance.setX(x);
}

答案 1 :(得分:4)

对博拉(伟大)回答的一些优化:

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) {

    mDistance.setText("" + AppConstants.getDistance() + " miles");
    float x = seekBarX
            + mSeekBar.getThumb().getBounds().left
            - toolTipTextView.getWidth()/2
            + seekBarLayoutParams.leftMargin;
    mDistance.setX(x);
}

并声明:

private RelativeLayout.LayoutParams seekBarLayoutParams;
seekBarLayoutParams = (RelativeLayout.LayoutParams) seekbar.getLayoutParams();
//or `LinearLayout` if you're using `LinearLayout`.

private float seekBarX;
int[] location = new int[2];
seekBarX = location[0];

即使你的SeekBar有余量,这也会完全放在拇指中间。

但是,它不涉及Y位置。要解决此问题,如果您的SeekBarmarginTop,请将其删除,只需将marginBottom添加到其上方的元素中(以xml格式)。

答案 2 :(得分:1)

已经有人问了。他们使用TextView,您可以使用ImageView或自定义视图来满足您的目的。 Check here.

答案 3 :(得分:1)

请参阅此示例,您可以从中了解

http://www.androidviews.net/2012/12/range-seekbar/

答案 4 :(得分:1)

以下计算对我有用。非常简单和合乎逻辑。

    ViewGroup.MarginLayoutParams seekBarParams = (ViewGroup.MarginLayoutParams) seekBar.getLayoutParams();
    // Calculate x position
    float x = seekBarParams.leftMargin + seekBar.getPaddingLeft() + seekBar.getThumb().getBounds().left - tvValue.getWidth()/2;
    tvValue.setX(x);
    // Calculate y position
    float y = seekBarParams.topMargin + seekBar.getPaddingTop() - tvValue.getHeight();
    tvValue.setY(y);