Создание всплывающего окна SeekBar в Android

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

Любые предложения?

4 ответа

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

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

отлично работает, с некоторой настройкой!

веселит


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

получив границы большого пальца. и установка 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);
 }


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


Отъезд blog

@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));
 }
 });
 }
}

licensed under cc by-sa 3.0 with attribution.