ジャワ
@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デバイスでテストしています:
- アンドロイド 2.3.6
- アンドロイド 4.2.2
4.2.2 では、正常に動作します。ドローアブルは、その上に描画された進捗値とともに表示されます。2.3.6 では、親指が最初に動かなくなります。動かそうとするとつまみの値が変わりますが、動かなくなったままです。
setBounds を削除でき、4.2.2 でも動作しますが、2.3.6 では親指に触れると完全に消えてしまいます。
何か案は?