it-swarm.dev

Jak zobrazit hodnoceníBar zobrazit pětice

Sleduji standardní příklad, jak přidat RatingBar. Pro kontrolu počtu hvězd jsem se pokusil použít Android:numStars="5". Problém je v tom, že počet hvězd vůbec nečiní vůbec nic. V portrétu dostanu 6 hvězdiček a když se otočím, dostanu asi 10 hvězdiček. Snažil jsem se nastavit počet hvězd v mé aktivitě (myBar.setNumStars(5)), která načte xml, ale ani s touto možností nebyl úspěch. 

Takže moje otázka je, jak mám definovat své rozvržení tak, že bude zobrazovat pouze pět hvězdiček? Nastavení numStars nefunguje.

Díky předem, Roland

83
Roland
<RatingBar
            Android:id="@+id/rating"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            style="?android:attr/ratingBarStyleSmall"
            Android:numStars="5"
            Android:stepSize="0.1"
            Android:isIndicator="true" />

v kódu 

mRatingBar.setRating(int)
148
Alex Volovoy

Dokumentace RatingBar.setNumStar říká:

Nastaví počet hvězdiček, které se mají zobrazit. Aby se tyto ukázaly správně , Doporučuje se šířka rozvržení tohoto widgetu.

Takže nastavení šířky rozložení na wrap_content by mělo tento problém vyřešit.

53
Lisandro

Toto fungovalo pro mě: RatingBar by mělo být uvnitř LinearLayout jiné než mít šířku rozložení nastavenou tak, aby zabalila obsah RatingBar

25
Supun

Pokud navíc nastavíte layout_weight, nahradí tento atribut numStars.

10
jsimon
<RatingBar
                    Android:id="@+id/ratingBar"
                    style="@style/custom_rating_bar"
                    Android:layout_width="wrap_content"
                    Android:layout_height="35dp"
                    Android:clickable="true"
                    Android:numStars="5" 
                    />

Nakonfigurujte počet hvězd v souboru XML ... Není třeba je poskytovat ve Stylech nebo Aktivitě/Fragmentu .... DŮLEŽITÉ: Ujistěte se, že není povolen obsah WIDTH jako Wrap a váhy.

5
Ajith Memana

Také jsem se potýkal s problémem, který převyšuje počet hvězd. Z tohoto důvodu nechceme dělat starosti s jakýmkoliv typem rozvržení, ať už relativním nebo lineárním. Jednoduše použijte šířku takto:

ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


Prosím vyhnout using match_parent a fill_parent pro ratingbar .
Doufám, že by to bylo užitečné.

5
Deva

Měli byste použít numStars="5" ve vašem XML a nastavit Android:layout_width="wrap_content".
Pak si můžete hrát se styly a dalšími věcmi, ale "wrap_content" v layout_width je to, co dělá trik.

4
Adrián Alvarez

Pokud používáte 

Android:layout_width="match_parent"

Použijte wrap_content a zobrazí se pouze sada numStars :)

Android:layout_width="wrap_content"

4
MQoder

Dokonce i já jsem čelil problému @Roland, měl jsem jeden další atribut nazvaný 

Android:layout_alignParentRight="true" 

v mém RatingBar prohlášení v XML. Tento atribut znemožnil nastavení požadovaných hvězd a nastavení NumStars 

Udržujte zveřejněn na otázky, narazíte!

3
ReachmeDroid

Pro mě jsem měl problém, dokud jsem neodstranil polstrování. Vypadá to, že na některých zařízeních je chyba, která nezmění velikost pohledu tak, aby vyhovovala polstrování, a místo toho komprimuje obsah.

Odstraňte padding, místo toho použijte layout_margin.

2
John Leehey

Chcete-li zobrazit jednoduché hodnocení hvězdičkami v kulatém obrázku, použijte tento kód

public static String getIntToStar(int starCount) {
        String fillStar = "\u2605";
        String blankStar = "\u2606";
        String star = "";

        for (int i = 0; i < starCount; i++) {
            star = star.concat(" " + fillStar);
        }
        for (int j = (5 - starCount); j > 0; j--) {
            star = star.concat(" " + blankStar);
        }
        return star;
    }

A používejte to takhle

button.setText (getIntToStar (4));

1

Výchozí hodnota je nastavena pomocí android: rating v rozložení xml.

1
Kevin Gaudin

Můžete přidat výchozí hodnocení pěti hvězdiček na straně xml rozložení

Android:rating="5"

Upravit: 

<RatingBar
        Android:id="@+id/rb_vvm"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:layout_marginBottom="@dimen/space2"
        Android:layout_marginTop="@dimen/space1"
        style="@style/RatingBar"
        Android:numStars="5"
        Android:stepSize="1"
        Android:rating="5" />
1
Gaurav Shetty
<LinearLayout 
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" >

    <RatingBar
        Android:id="@+id/ruleRatingBar"
        Android:isIndicator="true"
        Android:numStars="5"
        Android:stepSize="0.5"
        style="?android:attr/ratingBarStyleSmall"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        />
</LinearLayout>
0
Muzikant

Další možností je použití hodnocení v adaptéru zobrazení seznamu

View Android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)

Níže uvedené parametry jsou nezbytné pro správnou funkci všech atributů:

  1. Nastavitroottoparent
  2. booleanattachToRootasfalse

Ex: ConvertView = inflater.inflate (R.layout.myId, rodič, false);

0
Devrath

Zjistil jsem, že RatingBar se natáhlo na maximální počet hvězdiček, protože bylo uzavřeno v tabulce s atributem Android:stretchColumns = "*".

Jakmile jsem stretchCoulumns vzal ze všech sloupců, zobrazí se RatingBar podle hodnoty Android:numStars

0
Jon