2015-11-19 21 views
5

Mam następujący RatingBar:Android. RatingBar (wypełnianie następną gwiazdę)

<RatingBar 
       android:id="@+id/ratingBar" 
       android:layout_width="wrap_content" 
       android:layout_height="35dp" 
       android:numStars="5" 
       android:max="5" 
       android:stepSize="1.0" 
       android:layout_marginTop="12dp"/> 

Po naciśnięciu lewa część gwiazdy - to jest zaznaczone, ale kiedy nacisnąć prawą część - wybrano następujący gwiazda. Potrzebuję gwiazdy, którą kliknę, aby ją wybrać, którejkolwiek części kliknę. Pomóż mi proszę zrozumieć, co jest nie tak.

+0

nie używasz 'setOnTouchListener' ?? –

+0

http://sampleprogramz.com/android/ratingbar.php –

+0

spróbuj usunąć Androida: layout_marginTop lub nadrzędny pojemnik wyściełanie – AbuQauod

Odpowiedz

7

To może niefortunne efektem ubocznym RatingBar rozszerzenie ProgressBar, wewnątrz której wykorzystuje int postępy zaokrąglenie (zamiast ceil), aby przejść z pozycji float dążą do int toku. Najlepszym rozwiązaniem znalazłem jest ustawienie stepSize do 0.01 a następnie 1, a następnie ustawić

rb.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { @Override public void onRatingChanged(final RatingBar ratingBar, final float rating, final boolean fromUser) { if (fromUser) { ratingBar.setRating(Math.ceil(rating)); } } });

+0

Perfect! Dziękuję za Twój czas! – Nick