Создание всплывающего окна с позицией SeekBar в Android - PullRequest
5 голосов
/ 29 июня 2011

В моем приложении есть SeekBar, и я хочу, чтобы он вел себя так, чтобы, когда пользователь перетаскивал «большой палец», над большим пальцем появлялось всплывающее окно (и следовало за ним при перетаскивании большого пальца), а всплывающее окносоответствующая позиция SeekBar (или любой другой текст, который может представлять эта позиция).

Есть предложения?

Ответы [ 5 ]

1 голос
/ 27 мая 2015

Проверьте этот блог

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
   // TODO Auto-generated method stub
        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
        p.addRule(RelativeLayout.ABOVE, seekBar.getId());
        Rect thumbRect = bar.getSeekBarThumb().getBounds();
        p.setMargins(
        thumbRect.centerX(),0, 0, 0);
        textView.setLayoutParams(p);
        textView.setText(String.valueOf(progress));
    }
  });
 }
}
0 голосов
/ 13 июня 2019

Вот версия выбранного ответа Kotlin и чуть более подробно

override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
    txtSeekMonthsPopup.text = progress.toString()
    val params: RelativeLayout.LayoutParams = 
    txtSeekMonthsPopup.layoutParams as RelativeLayout.LayoutParams
    val existingMargin = params.marginStart
    params.marginStart = (seekBar?.thumb?.bounds?.left?: existingMargin) + 20 // 20 makes the text view more centered on the thumb
}
0 голосов
/ 01 июля 2011

Решение, которое я нашел для этого всплывающего окна после строки поиска, - поместить текстовое представление в относительную компоновку прямо над панелью поиска. Затем в onProgressChange seekbar установите левое поле textView соответственно, используя

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(widht, height)
params.setLeftMargin(margin)

отлично работает, с некоторыми изменениями!

ура

0 голосов
/ 22 октября 2013

Это должно быть поздно, однако я сделал это так.

получая границы большого пальца. и установка x текстового представления в progressChanged of seekbar

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

    mDistance.setText("" + AppConstants.getDistance() + " miles");
   //Get the thumb bound and get its left value
    int x = mSeekBar.getThumb().getBounds().left;
         //set the left value to textview x value
    mDistance.setX(x);
  }
0 голосов
/ 29 июня 2011

Большой палец можно рисовать, поэтому может быть предложено установить большой палец для рисования, включающего как большой палец, так и всплывающее окно с текстом.Это означает, что вам потребуется нарисовать / значок для каждого возможного значения на вашем слайдере, и обновлять его каждый раз, когда значение изменяется.Оглядываясь вокруг, я обнаружил, что это означает, что другие пошли по тому же пути, когда им нужен был текст в их чертежах: Преобразовать строку в Drawable

...