2011-06-29 3 views
4

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

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

ответ

0

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

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

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

ура

+0

Как вы завершили расчет маржи? – JRaymond

+0

нет setLeftMargin метод – GOLDEE

+0

вы можете объяснить глубоко, что как его работа plz ?? – shripal

0

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

+0

, что на самом деле не будет работать для моего проекта, потому что искать бар соответствует положению в книге, из которых может быть 1000 различных возможностей ... – Andrew

+0

@ Андрей: Я вижу, ну, я с нетерпением жду лучшего ответа, это интересный вопрос. – Marmoy

1

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

, получив границы большого пальца. и установив е TextView в на progressChanged из 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

Проверить это 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)); 
    } 
    }); 
} 
} 
Смежные вопросы