Как сделать само обновление панели поиска после касания - PullRequest
0 голосов
/ 13 января 2011

Надеюсь, это простая проблема.

У меня есть поисковая панель, которую я хочу ограничить диапазоном, на который она может быть установлена. Этот диапазон может изменяться в зависимости от других факторов (значения других групп поиска и т. Д.)

Панель поиска представляет собой простой диапазон от 0 до 100 и определяет процент. Мне нужно, чтобы это значение было минимальным, которое может варьироваться от 0% (нормальная работа панели поиска) до более высокого значения (скажем, 50%, например).

Код выполняет расчет и определяет минимальное значение в зависимости от других переменных.

Когда я перетаскиваю панель поиска ниже этого порога, я хочу, чтобы он сбрасывал значение до этого минимума. Вот пример кода

seek6.setOnTouchListener( new OnTouchListener() { 

@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP) {        
        int CurrentLevel = seek6.getProgress();
        if (CurrentLevel < 30) CurrentLevel = 30;
        seek6.setProgress(CurrentLevel);
            }

    return false;
    }   
     });

Так что в этом примере, если я перетащу ниже 30, значение будет восстановлено до 30.

Если я потяну выше 30, все будет хорошо. Если я перетаскиваю ниже отметки 30, то функция поиска GetValue () возвращается как 30, но панель поиска показывает меньшее значение.

Например, если я перетаскиваю его до 0, возвращаемое значение равно 30, но на экране отображается 0.

Как я могу заставить панель поиска автоматически отображаться в позиции 30 автоматически?

Я пытался изменить фокус, обновить панель поиска другим способом. Пока ничего не получалось.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 13 января 2011

У меня есть ответ после многих изнурительных часов поисков.

seek6.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
    public void onStopTrackingTouch(SeekBar seekBar){               
        // TODO My code goes here

        int CurrentLevel = seek6.getProgress();
        if(CurrentLevel < 30)
            CurrentLevel = 30;
        seek6.setProgress(CurrentLevel);

    }

    public void onStartTrackingTouch(SeekBar seekBar){}

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

Спасибо всем, кто так или иначе исследовал это.

0 голосов
/ 24 июля 2012

Я думаю, что это поможет вам ..

    final TextView t1 = (TextView) findViewById(R.id.t1);
    final SeekBar sk = (SeekBar) findViewById(R.id.seekBar1);

    sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

        int p = 0;

        @Override
        public void onStopTrackingTouch(SeekBar seekBar){
            if(p < 30){
                p = 30;
                sk.setProgress(p);
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar){}

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
            p = progress;
            t1.setTextSize(p);
        }
    });
...