2016-02-29 16 views
9

Uso le barre di valutazione nella mia applicazione Android. Ma mostra solo stelle piene, quando voglio anche mezze stelle.La barra di valutazione Android mostra solo stelle piene, anche mezze stelle

Ho inserito una riga SQLite con un nome e il ratingValue, in esso il RatingValue si presenta come "3.5" ma la mia applicazione lo trasforma in "4". Anche se il mio passo di è "0.5", anche il valore di default viene modificato in "3"

EDIT: Se si fa clic sul listrow, che le finestre di dialogo un'altra ratingbar cui è possibile "tasso" e se si fa clic su un pulsante, invia il valore di valutazione nel database. Il RatingBar listitem è solo per mostrare il rating "media", ma è lì che le cose vanno male, si arrotonda il valore fino

EDIT 2: impostare il passo di a 0.1 ed ora, stranamente, solo la stella centrale accetta la float number ... Il resto delle stelle è ancora pieno solo E se imposto il punteggio su 1.2, solo la seconda stella accetta il valore float, il primo 0.2, ecc. ma le altre stelle (non in quell'intervallo) sono solo o pieno o vuoto

Ecco po 'di codice

ListItem_la yout

<TableRow>  
    <RatingBar 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/sportsRatingBar" 
     android:gravity="center_horizontal" 
     android:focusableInTouchMode="false" 
     android:isIndicator="true" 
     android:clickable="false" 
     android:focusable="false" 
     android:layout_column="1" 
     android:rating="1.1" 
     android:stepSize="0.1" /> 

ListItem

if(ratingBar!=null) { 
       ratingBar.setRating(p.getRating()); 
       ratingBar.setTag(p.getId()); 
      } 

classe riutilizzabile

public float getRating() { return Rating; } 

SQLite Tabella Colonna per il tuo voto

COLUMN_RATING + " real not null);" 

E per ultimo, ricevendo dal database

c.getFloat(COLUMN_RATING_COL)); 

alcune immagini per spiegare after setting first ratingbar to 2.6

+0

ho trovato la risposta, in parte a causa di @ Dave Ranjan e in parte con l'aggiunta di uno stile di ratingbar, ha trovato qui, http://stackoverflow.com/a/31307775/5985522 – sander338

risposta

3

Penso che non sia necessaria alcuna libreria per questo, l'ho appena provato e funziona.

<android.support.v7.widget.AppCompatRatingBar 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="?android:attr/ratingBarStyle" 
    android:background="@android:color/holo_red_dark" 
    android:id="@+id/ratingBar1" 
    android:stepSize="0.1" 
    android:rating="2.5"/> 

Ho impostato il valore di start su 4.5 e funziona in questo modo.

RatingBar ratingBar = (RatingBar) findViewById(R.id.coloredRatingBar1); 
    ratingBar.setRating(4.8f); 
    ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { 
     @Override 
     public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { 
      Log.i(TAG, "onRatingChanged: rating : "+rating); 
     } 
    }); 
+0

questo non mi aiuta, se leggo i valori dal database dice il giusto valore, un float, ma dal momento in cui voglio visualizzarlo nella mia barra di valutazione, è arrotondato per eccesso – sander338

+1

Ho provato a impostare la valutazione in modo dinamico come questo 'ratingBar.setRating (4.5f);' e ha funzionato. Per favore prova lo stesso. –

+0

grazie per l'aiuto, sono un po 'più lontano ora (editato nella mia domanda) ma il valore deve venire dal database sqlite. e con il database, solo la stella centrale "accetta" il float ... – sander338

1

Prima di tutto il widget di valutazione del modo in cui è definito non può accettare i valori. Clickable è impostato su false e isIndicator è reso true. Per accettare input definire il widget nel seguente modo

<RatingBar 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/sportsRatingBar" 
     android:gravity="center_horizontal" 
     android:rating="2.5" 
     android:stepSize="0.5" /> 

per Getting i valori non sono sicuro di come la variabile di valutazione è in corso di

Controllare l'immagine di come il widget appare like!

+0

i RatingBars nella lista di cui sopra non può essere modificato manualmente, quindi è un indicatore e il selezionabile è impostato su false, quindi posso dare una finestra di dialogo che si apre se si fa clic su un listrow. – sander338

+0

In quel caso il tuo codice andava bene. Se potessi condividere il codice getRating sarebbe in grado di aiutarti. –

+0

quella sarebbe la classe riutilizzabile, è solo quel metodo;) – sander338

Problemi correlati