@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
app.iMeter = progress;
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.slider_pad_2x).copy(Bitmap.Config.ARGB_8888, true);
float scale = getResources().getDisplayMetrics().density;
float x = (int) (17 * scale + 0.5f);
int y = (int) ((b.getHeight()/2-3) * scale + 0.5f);
if(seekBar.getProgress() > 9) {
x = (int) (14 * scale + 0.5f);
}
if(seekBar.getProgress() > 99) {
x = (int) (11 * scale + 0.5f);
}
Canvas canvas = new Canvas(b);
canvas.drawText(""+progress, x, y, paint);
BitmapDrawable bd = new BitmapDrawable(b);
bd.setBounds(0, 0, bd.getIntrinsicWidth(), bd.getIntrinsicHeight());
seekBar.setThumb(bd);
}
XML
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:background="@drawable/slider_background_2x"
android:max="200"
android:paddingLeft="17dp"
android:paddingRight="16dp"
android:progress="0"
android:progressDrawable="@drawable/transparant_dot"
android:thumb="@drawable/slider_pad_2x" />
我在2個不同版本的Android設備上測試:
- 的Android 2.3.6
- Android 4.2.2
在4.2.2上,它的工作原理應該如此。顯示可繪製的進度值。在2.3.6上,拇指被卡住了。當我嘗試移動它時,拇指上的值確實會改變,但它仍然卡住。
我可以刪除setBounds,它仍然可以在4.2.2上工作,但在2.3.6上,當我觸摸它時,拇指會完全消失。
任何想法?
我也有同樣的問題。在Android版本> 4.0中工作正常,但在2.3.x中無法工作 – Dray
您好Pim,我面臨同樣的問題,它不適用於Android 2.3.6。你解決了這個問題嗎?如果您解決了問題,請幫助我如何解決此問題 –
嘿Murali,是的,我解決了問題,但我無法再訪問代碼(切換作業)......但這是可能的。如果您找到解決方案,請將其添加爲答案。祝你好運! –