ProgressBar底部文字跟进度移动
时间: 2023-08-17 15:31:15 浏览: 105
如果你想让 ProgressBar 底部的文字能够跟随进度条的移动而移动,可以使用 ProgressBar 的 getThumb() 方法获取到进度条的滑块,然后通过设置滑块的位置来实现底部文字的移动。具体的代码如下:
```java
SeekBar seekBar = findViewById(R.id.seek_bar);
final TextView textView = findViewById(R.id.text_view);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 获取进度条的滑块
Drawable thumb = seekBar.getThumb();
// 计算滑块的位置
int thumbLeft = seekBar.getLeft() + seekBar.getPaddingLeft() + (seekBar.getWidth() - seekBar.getPaddingLeft() - seekBar.getPaddingRight()) * progress / seekBar.getMax() - thumb.getBounds().width() / 2;
// 设置滑块的位置
thumb.setBounds(thumbLeft, thumb.getBounds().top, thumbLeft + thumb.getBounds().width(), thumb.getBounds().bottom);
// 更新底部文字的位置
textView.setX(thumbLeft);
textView.setText("当前进度:" + progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
```
在这个例子中,我们创建了一个 SeekBar 控件和一个 TextView 控件,然后在 setOnSeekBarChangeListener() 方法中设置了一个监听器。在 onProgressChanged() 方法中,我们获取了进度条的滑块,并计算出了滑块的位置。然后通过设置滑块的位置和更新底部文字的位置,使底部文字能够跟随进度条的移动而移动。需要注意的是,我们还需要设置一下 TextView 的宽度,使其能够居中显示在滑块下方。
阅读全文