2015-11-19 18 views
5

Ho la seguente RatingBar:Android. RatingBar (riempimento prossima stella)

<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"/> 

Quando si preme la parte sinistra di una stella - è selezionato, ma quando si preme la parte destra - viene selezionata la seguente stella. Ho bisogno della stella su cui clicco per essere selezionata, qualunque sia la parte di cui clicco. Aiutami a capire cosa c'è che non va.

+0

hai fatto usando 'setOnTouchListener' ?? –

+0

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

+0

prova a rimuovere l'androide: layout_marginTop o il contenitore genitore padding – AbuQauod

risposta

7

È forse un effetto spiacevole lato RatingBar estendentesi ProgressBar, che utilizza internamente un progresso int con arrotondamento (anziché ceil) per passare da una float seek posizione ad una progresso int. La soluzione migliore che ho trovato è quello di impostare il stepSize a 0.01 piuttosto che 1, quindi impostare

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

Perfetto! Grazie per il tuo tempo! – Nick