Изменить Thumb-Drawable of SeekBar, если прогресс превышает 10%? - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь изменить рисунок большого пальца на панели поиска, когда прогресс превысит 10% ... но дело в том ... что когда прогресс достигнет> 10, рисованный большой палец «исчезает» .. это какие-то известные ошибки или это так же просто, как это возможно?

Вот мой код:

    public class SliderTestActivity extends Activity {
    SeekBar sb;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        sb = (SeekBar)findViewById(R.id.seekBar1);
        sb.setThumb(getResources().getDrawable(R.drawable.fingerprint));
        sb.setProgress(50);
        sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            public void onStopTrackingTouch(SeekBar seekBar) {
                seekBar.setThumb(getResources().getDrawable(R.drawable.egg));

            }

            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

            }

            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                if(progress > 10)
                {
                    sb.setThumb(getResources().getDrawable(R.drawable.egg));
                }

            }
        });
    }
}

Заранее спасибо!

1 Ответ

1 голос
/ 19 февраля 2012

Я нашел это в сети:

final Drawable d = getResources().getDrawable(R.drawable.egg);
d.setBounds(new Rect(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()));
slider.setThumb(d);

Большой палец не исчезает, однако после изменения он ведет себя немного странно. Он не останавливается в начале и конце SeekBar, и половина его скрыта.

Edit: Он показывает, что setThumb также устанавливает смещение большого пальца на половину ширины. Установив смещение на 0 после установки большого пальца, вы можете заставить его вести себя как оригинальный большой палец:

slider.setThumb(d);
slider.setThumbOffset(0);
...