2011-06-29 46 views
4

我在我的应用程序中有一个SeekBar,我希望它的行为使得当用户拖动'thumb'时,一个Popup出现在拇指上方(并且遵循拇指拖动),并且弹出窗口显示SeekBar的相应位置(或位置可能表示的任何其他文本)。在Android中创建一个SeekBar位置popup

有什么建议吗?

回答

0

我找到这个弹出后面的搜索栏的解决方案是把textview放在相对布局正上方搜索条。然后,在搜索条的onProgressChange,设置TextView的左边缘从而用

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(widht, height) 
params.setLeftMargin(margin) 

的伟大工程,与一些调整!

欢呼声

+0

你是如何计算保证金的? – JRaymond

+0

有没有setLeftMargin方法 – GOLDEE

+0

你能深入解释一下,它的工作原理如何? – shripal

0

拇指是可绘制的,所以一个解决方案可以是将拇指设置为包含拇指和弹出文本的绘图。这意味着您需要为滑块上的每个可能值绘制一个可绘制/图标,并在每次更改值时更新它。环顾四周,我发现这一点,这表明其他人已经走过了这样的方式,当他们需要在他们的可绘制文本:Convert String to Drawable

+0

这其实不是要为我的项目工作,因为搜索栏对应的位置在书上,其中可能有1000种不同的可能性...... – Andrew

+0

@Andrew:我明白了,我很期待看到更好的答案,这是一个有趣的问题。 – Marmoy

1

这一定很晚但是我这样做。

通过获取拇指的范围。和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); 
    } 
0

看看这个blog

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    // TODO Auto-generated method stub 
     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
     RelativeLayout.LayoutParams.WRAP_CONTENT, 
     RelativeLayout.LayoutParams.WRAP_CONTENT); 
     p.addRule(RelativeLayout.ABOVE, seekBar.getId()); 
     Rect thumbRect = bar.getSeekBarThumb().getBounds(); 
     p.setMargins(
     thumbRect.centerX(),0, 0, 0); 
     textView.setLayoutParams(p); 
     textView.setText(String.valueOf(progress)); 
    } 
    }); 
} 
}