Android Изменение Seekbar Thumb с Java вызывает сброс положения большого пальца - PullRequest
0 голосов
/ 07 октября 2011

Я пытаюсь создать панель поиска большим пальцем, который меняет цвет, когда пользователь нажимает его, и обратно, когда пользователь отпускает его. Мне удалось изменить рисование большого пальца, используя set thumb. Тем не менее, я также должен был установить границы рисования в Java, чтобы он появился после изменения. Теперь, когда пользователь отпускает ползунок, и он возвращается к своей исходной прорисовке, он сбрасывает прорисовку в нулевую позицию и оставляет прогресс там, где он должен быть. Я пытался использовать глобальную переменную для сброса прогресса на панели поиска после изменения рисования, но, похоже, это не работает. Если я использую статическое целое число для сброса прогресса, он работает так, как я хочу.

Вроде плохо знаком с android, и я не знаю, что я делаю неправильно.

Это код, который изменяет рисование при касании.

private void Seek_Height_Click() {
    Drawable myThumb = getResources().getDrawable(R.drawable.slider_button_click);
    myThumb.setBounds(new Rect(0, 0, myThumb.getIntrinsicWidth(),myThumb.getIntrinsicHeight()));
    Height_of_Target_skbr.setThumb(myThumb);
    Height_of_Target_skbr.setThumbOffset(-1);
}

Это код для возврата большого пальца к исходному рисунку.

private void Seek_Height_UnClick() {
    Drawable myThumb = getResources().getDrawable(R.drawable.slider_button);
    myThumb.setBounds(new Rect(0, 0,   myThumb.getIntrinsicWidth(),myThumb.getIntrinsicHeight()));
    Height_of_Target_skbr.setThumb(myThumb);
    Height_of_Target_skbr.setThumbOffset(-1);
    Height_of_Target_skbr.setProgress(Height_Prog_int);
}

Это код, который вызывает вышеуказанный метод.

this.Height_of_Target_skbr.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            returnHeight_skbr();
            Seek_Height_UnClick();
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            returnHeight_skbr();
            Seek_Height_Click();
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            returnHeight_skbr();
        }
    });

1 Ответ

1 голос
/ 21 октября 2011

Мне удалось выполнить эту работу с помощью создания стиля в папке для рисования, а затем установки большого пальца для этого стиля.

Я обратился к этому руководству, чтобы выполнить эту работу.http://www.youtube.com/watch?v=zXXCFmfJMNw

Код для стиля большого пальца

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
    android:state_pressed="true"
    android:drawable="@drawable/slider_button_click">
</item>
<item 
    android:drawable="@drawable/slider_button">
</item>
</selector>
...