2012-06-18 7 views
28

ho bisogno di inserire uno spazio tra le stelle della mia ratingBar, ad esempio il ratingbar è ben:spazio tra le stelle di ratingBar

enter image description here

ma ho bisogno così:

enter image description here

come posso farlo?

+0

Sede [questo SO rispondere] (http://stackoverflow.com/questions/4213784/spacing-between-the-stars-of-a- voto-bar). – Eric

+1

Ho aggiunto una richiesta di funzionalità, per favore vota per questo: https://code.google.com/p/android/issues/detail?id=230511 –

risposta

3

Non so se sarà più utile, ma ho creato una libreria personalizzata che consente di modificare lo spazio tra le stelle in modo programmatico e in XML (tra le altre cose): SimpleRatingBar.

È dotato di:

  • completamente funzionante android:layout_width: può essere impostato su wrap_content, match_parent o abritary dp.
  • Numero arbitrario di stelle.
  • Dimensione step arbitraria.
  • La dimensione delle stelle può essere controllata esattamente o impostando una dimensione massima.
  • Colori personalizzabili in stato normale (bordo, riempimento e sfondo di stelle e barra di valutazione).
  • Colori personalizzabili in stato premuto (bordo, riempimento e sfondo di stelle e barra di valutazione).
  • Separazione di dimensioni personalizzabili tra le stelle.
  • Larghezza bordo personalizzabile di stelle.
  • Raggio d'angolo delle stelle personalizzabile.
  • Consente di impostare OnRatingBarChangeListener
  • Il riempimento di stelle può essere impostato per l'avvio da sinistra a destra o da destra a sinistra (supporto lingua RTL).
  • AnimationBuilder integrato nella vista per impostare la classificazione programmaticamente con animazione.

Here is a preview of it.

Nel tuo caso, si dovrebbe solo avere a che fare:

ratingbar.setStarsSeparation(20, Dimension.DP); 

o, per esempio, in pixel:

ratingbar.setStarsSeparation(100, Dimension.PX); 

Lo si può trovare sia in jcenter o in Maven Central. Quindi nel tuo file di build.gradle basta aggiungere le dipendenze:

compile 'com.iarcuschin:simpleratingbar:0.1.+'

+0

Non supporta il drawable personalizzato per le stelle. O lo fa? – FoY

+0

Ciao @FoY, non è così. – FlyingPumba

0

Penso che dovresti prendere una copia del file png star dei sistemi e aggiungere manualmente il padding che vuoi con un photoshop/gimp/qualche altro editor.

+0

Come per i link che ho postato sopra, credo che tu possa personalizzare il ' Drawable' usato per le stelle usando gli attributi di dimensione per finti padding (impostando un tag 'style' per' RatingBar'). – Eric

+0

questo modo era stato brutto, non hanno un modo in configurazioni di classe ratingbar – ademar111190

+0

@Soxxeh Hmm, non trovo un esempio di quello in entrambi i link che hai postato. Il primo sembra più promettente, ma la prima frase dice: "Devi aggiungere il padding al png stesso" e continua a mostrare un metodo dalla classe ProgressBar. Non vedo da nessuna parte uno stile che abbia influito sul padding. Puoi elaborare? – FoamyGuy

0

Sono d'accordo con Tim ho applicato la stessa logica e ha funzionato. Qui nel mio progetto sto usando le mie immagini stellari per la stella ratin Ho fatto immagini stellari con spazio extra (imbottitura) sul lato destro che ha prodotto spazio tra le stelle

+1

Sì, sono d'accordo, ma. Considerate ora quanto segue, realizzerete 4 tipi di barre di valutazione su un grande progetto, ciascuna barra di valutazione con 2 o 3 diversi tipi di drawable sono circa 10 immagini che aggiungono, per esempio, 2px di spazio, ora pensate sia necessario aumentare lo spazio di 1px, I preferisci cambiare setPadding (2) in setPadding (3) invece di riemettere di 10 immagini. – ademar111190

+0

hai una soluzione sulla tua strada. Per favore condividi ciò che hai provato il migliore – Meher

+0

sfortunatamente non ho trovato nulla di elegante per risolvere questo problema, ho inserito la spaziatura nella tua immagine :(, non mi piaceva il problema risolto nella speranza di trovare un modo giusto per farlo. – ademar111190

3

Hai una proprietà successiva.

android:progressDrawable = "@drawable/rating_stars" 
android:indeterminateDrawable = "@drawable/rating_stars" 

@ disegnabili/RATING_STARS:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+android:id/background" 
      android:drawable="@drawable/star_empty" /> 
    <item android:id="@+android:id/secondaryProgress" 
      android:drawable="@drawable/star_empty" /> 
    <item android:id="@+android:id/progress" 
      android:drawable="@drawable/star" /> 
</layer-list> 

star_empty e stelle sono le immagini che sono nella directory drawable. Quindi, puoi cambiare stella e star_empty in un editor grafico e aggiungere uno spassing se necessario.

+3

Sì I d'accordo, ma. Ora considera quanto segue, creerai 4 tipi di barre di valutazione su un grande progetto, ogni barra di valutazione con 3 diversi tipi di drawable sono circa 12 immagini che mettono, diciamo, 2px di spazio, ora pensa che sia necessario aumentare lo spazio di 1px , Preferisco cambiare setPadding (2) per setPadding (3) invece di riemettere di 10 immagini – ademar111190

1

Basta usare l'icona personalizzata per esso e utilizzare lo stile, intendo Photoshop come vuoi che venga visualizzato e sostituito con l'icona di stile di classificazione del sistema.