Android Как добавить тексты интервалов в поисковой строке

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

Соответствующий код находится здесь:

seekbar = (SeekBar) findViewById(R.id.seekBar1); seekbar.setMax(max); seekbar.setProgress(50); seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub value.setText("SeekBar value is " + progress); } public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } }); 

Чтобы сделать вышеуказанную строку поиска, сначала нужно добавить шкалу измерения в качестве фона. Затем вам нужно будет создавать текстовые поля для каждого интервала в измерительной шкале.

 <SeekBar .... android:progressDrawable="@drawable/progress" android:thumb="@drawable/thumb" .... /> 

затем

 public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { progress = ((int)Math.round(progress/interval))*interval; seekBar.setProgress(progress); if(progress==5) textBox5.setTextColor(Color.RED); else if(progress==10) textBox10.setTextColor(Color.RED); //......... for all the text boxes. } 

Фактически, все приведенные выше решения вынуждают выбирать последнюю точку прогресса, которая не является логической.

Чтобы сделать это болото-букетом, панель поиска должна определить, какая ближайшая точка и перейти к ней.

Итак, ниже – это решение,

 @Override public void onStopTrackingTouch(SeekBar seekBar) { int progressStep = getMax() / dotsCount; int lastDotProgress = Math.round(getProgress() / progressStep) * progressStep; int nextDotProgress = lastDotProgress + progressStep; int midBetweenDots = lastDotProgress + (progressStep / 2); if (getProgress() > midBetweenDots) seekBar.setProgress(nextDotProgress); else seekBar.setProgress(lastDotProgress); } 

Вы можете использовать такое же поведение в onProgressChanged (), если хотите предотвратить поиск между точками

 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int s_size=5; progress = ((int)Math.round(progress/s_size))*s_size; seekBar.setProgress(progress); textview.setText(progress + ""); } 

То, что вы хотите настроить, легко получить от прогресса и значения textview.settext ()

Intereting Posts
Не удается получить gridView при прослушивании кликов Загрузить фотографию на диск без сжатия Самый простой способ отображения строк со значками в RecyclerView Как предотвратить «Планирование перезапуска аварийной службы»? Android: центральная сетка горизонтально Android Храните пакетный объект в SQLite Facebook hash key при использовании студии Android Получите время выполнения видео, воспроизводимого при видеообъявлении? Настройки Android: неправильные значения по умолчанию DESPITE "setDefaultValues" Android – Как измерить качество полосы пропускания в локальной сети одним телефоном Когда я должен использовать 9 патч-изображений в android Android: потоковые данные камеры и запись на сервер Как использовать DrawerLayout для отображения на панели ActionBar / Toolbar и в строке состояния? Есть ли какое-нибудь редактирование изображений SDK, доступное для Android Для чего нужно использовать AccountManager для Android?