在设置完 SeekBar 的最大值和最小值后,再调用 setProgress() 方法来设置当前进度值。这样还是会先显示在起始位置
时间: 2024-02-09 10:09:07 浏览: 22
如果你在设置 SeekBar 的最大值和最小值之后再调用 setProgress() 方法来设置当前进度值,Seekbar 的滑块确实会先显示在起始位置,但是这只是因为在重新设置进度值之前,SeekBar 的滑块没有被绘制出来。如果你想要设置初始进度值并且让滑块直接显示在对应位置,可以在设置进度之前先调用一次 setProgress() 方法来设置一个默认进度值,然后再根据实际需要调用 setProgress() 方法来设置进度值就可以了。例如:
```java
SeekBar seekBar = findViewById(R.id.seek_bar);
seekBar.setMax(100);
seekBar.setProgress(50); // 设置一个默认进度值
seekBar.setProgress(80); // 根据实际需要设置进度值
```
这样做的话,SeekBar 的滑块就会直接显示在进度为 80% 的位置。希望能够帮到你!
相关问题
Android开发,seekbar,在xml里设置最大值,最小值,步长
在Android开发中,可以通过在XML文件中设置SeekBar的属性来设置最大值、最小值和步长。具体方法如下:
1. 设置最大值和最小值
可以使用SeekBar的android:max属性来设置SeekBar的最大值,使用android:min属性来设置SeekBar的最小值。例如,要将SeekBar的最大值设置为190,可以在XML文件中添加以下代码:
```xml
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="190" />
```
2. 设置步长
要设置SeekBar的步长,可以使用SeekBar的setOnSeekBarChangeListener()方法,并在onProgressChanged()方法中处理SeekBar的值。例如,要将SeekBar的步长设置为10,可以在Java代码中添加以下代码:
```java
SeekBar seekBar = findViewById(R.id.seekBar);
seekBar.setMax(20); // 设置SeekBar的最大值为20
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int value = progress * 10; // 将SeekBar的值乘以10,得到步长为10的值
// 处理SeekBar的值
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
```
注意,在onProgressChanged()方法中,SeekBar的值是一个0到SeekBar的最大值之间的整数,因此需要将SeekBar的值乘以步长才能得到实际的值。
Android seekbar 为什么 thumb每次初始化都会先显示在起始位置,然后才显示正确的位置
这是因为在初始化 SeekBar 时,系统会先设置 thumb 的位置为起始位置,然后才根据实际的值来调整 thumb 的位置。这个过程可以通过设置 `android:thumbOffset` 属性来改变 thumb 的初始位置,但是无法避免 thumb 先显示在起始位置的问题。
如果您想要在初始化时直接显示正确的位置,可以在设置完 SeekBar 的最大值和最小值后,再调用 `setProgress()` 方法来设置当前进度值。这样,系统就会根据实际的值来直接设置 thumb 的位置,避免了先显示在起始位置的问题。
示例代码:
```
SeekBar seekBar = findViewById(R.id.seekBar);
seekBar.setMax(100);
seekBar.setProgress(50); // 设置当前进度值为 50
```
这样,初始化时 thumb 就会直接显示在 50 的位置,而不是先显示在起始位置再调整到 50 的位置。