以编程方式将拇指设置到seekbar的特定位置(而不是偏移量)?

我有一个自定义的search栏,其中正在更新声音的进度和最大幅度。 因此,search栏根据声音检测而变化,并且拇指显示声音的最大灵活度。 我想将拇指的位置设置到特定的位置(Max Amblitude),就像我们在seekbar中设置进度一样。 我已经经历了大量的问题和答案,而且我也浏览了开发人员文档。 在开发者文档中,它提到只有偏移量可以保持拇指离开进度的轨道。

From Developer Doc setThumbOffset(int thumbOffset) –设置允许拇指伸出轨道范围的拇指偏移量。

是否有任何可能的方法来把拇指放在特定的位置。 示例如下所示。 在这里我已经设置拇指偏移只是显示一个样本,而不是我想把拇指设置到一个准确的位置。

在这里输入图像说明

我想你可以使用setProgress(int progress)来设置拇指位置,因为在SeekBar中,拇指会显示在进度表的末尾。
如果你想设置拇指的位置独立于进度,那么你可以实现自己的SeekBar扩展AbsSeekBar,你可以参考SeekBar的src 。

使用透明的进度颜色制作自定义进度栏 。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background" android:drawable="@drawable/my_background"/> <item android:id="@android:id/progress"> <clip android:drawable="@android:color/transparent" /> </item> <item android:id="@android:id/secondaryProgress"> <clip android:drawable="@drawable/my_visual_progress" /> </item> </layer-list> 

使用setSecondaryProgress(int)设置进度条的可视“进度”。

并使用setProgress(int)地移动拇指。

我不明白你的意思,但是我可以从你所说的那些事情上理解我做过的事情尝试使用不同的drawbles让我给你看一个例子:

你的code .java

 import android.os.Bundle; import android.app.Activity; import android.graphics.drawable.Drawable; import android.widget.SeekBar; public class MainActivity extends Activity { private SeekBar seekBar1; private SeekBar seekBar2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekBar1 = (SeekBar) findViewById(R.id.seekBar1); seekBar2 = (SeekBar) findViewById(R.id.seekBar2); seekBar1.setProgress(15); seekBar2.setProgress(55); Drawable ii = getResources().getDrawable(R.drawable.ii); // Drawable iii = getResources().getDrawable(R.drawable.ii); seekBar1.setThumb(ii); seekBar2.setThumb(ii); } } 

你的问题:

在这里输入图像说明

你可以做的只是simple重命名相同的drawable像这样:

 import android.os.Bundle; import android.app.Activity; import android.graphics.drawable.Drawable; import android.widget.SeekBar; public class MainActivity extends Activity { private SeekBar seekBar1; private SeekBar seekBar2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekBar1 = (SeekBar) findViewById(R.id.seekBar1); seekBar2 = (SeekBar) findViewById(R.id.seekBar2); seekBar1.setProgress(15); seekBar2.setProgress(55); Drawable ii = getResources().getDrawable(R.drawable.ii); Drawable iii = getResources().getDrawable(R.drawable.ii); seekBar1.setThumb(ii); seekBar2.setThumb(iii); } } 

这就是结果:

在这里输入图像说明