Ratingbar'ın boyutunu nasıl küçültebilirim?


129

Aktivitemde bazı Derecelendirme çubuklarım var. Ama bu çubuğun boyutu çok büyük! Nasıl küçültebilirim?

Düzenle

Gabriel Negut sayesinde bunu şu stille yaptım:

<RatingBar
style = "?android:attr/ratingBarStyleSmall"
android:numStars = "5"
android:rating   = "4" />

Artık boyut küçültüldü ancak yıldız sayısı ve derecelendirme geçerli olmadı !!! Neden? 6 tanesi seçili 7 yıldızım var.


Seekbar mı demek istiyorsun? Yükseklik ve genişliği ayarlamak benim için iyi çalışıyor. Kod pasajınızı buraya gönderebilir misiniz?
Shailendra Singh Rajawat

"Düzenlemeyi" kaldırmanızı ve bunun yerine kabul edilen cevap yapmanızı öneririm. Bu veya @GabrielNegut cevabını bu tür bir çözümü içerecek şekilde düzenleyebilir. Çözümü soruya dahil etmek, soru-cevap deneyiminden uzaklaşır.
onebree

1
style="?android:attr/ratingBarStyleSmall"benim için çalışıyor.
Muhammed Shahzad

Yanıtlar:


163

Gönderdiğim orijinal bağlantı artık bozuk (yalnızca bağlantı göndermenin en iyi yol olmadığının iyi bir nedeni var). Stil vermelisinRatingBar olan ya ratingBarStyleSmallya devralmasını bir özel stilWidget.Material.RatingBar.Small (sizi varsayarak uygulamanızda Malzeme Tasarımı kullanıyoruz).

Seçenek 1:

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleSmall"
    ... />

Seçenek 2:

// styles.xml
<style name="customRatingBar"   
    parent="android:style/Widget.Material.RatingBar.Small">
    ... // Additional customizations
</style>

// layout.xml
<RatingBar
    android:id="@+id/ratingBar"
    style="@style/customRatingBar"
    ... />

21
veya bu stili kullanarak style = "? android: attr / ratingBarStyleSmall" boyutu küçültecektir.
Mightian

1
Ancak sağda gereksiz bir ekstra dolgu var! Bunu nasıl kaldırabilirim ?!
Dr.jacky

Not: Fazla yıldızlardan kurtulmak için width = "wrap_content" yapın
hkchakladar

73

Bu, çirkin dolgu bile olmadan derecelendirme çubuğunu küçük boyutta düşürmek için çok uğraştıktan sonra benim çözümümdü

 <RatingBar
        android:id="@+id/listitemrating"
        style="@android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleX=".5"
        android:scaleY=".5"
        android:transformPivotX="0dp"
        android:transformPivotY="0dp"
        android:isIndicator="true"
        android:max="5" />

3
Eşit olmayan dolgu sorununu azaltmak için transformPivot kullanımıyla ilgili cevabınızı yükseltmek için giriş yaptım. Teşekkürler!
imin

Sonunda artık dolgu yok !!
Uday

Harika cevap! Teşekkür ederim!
valerybodak

1
Ölçek, kardeş görünümlerinin hizalanmasını bozar ve kenar boşlukları ile aralıkları dengesizleştirir.
Prateek Gupta

63

Derecelendirme çubuğunu küçük boyutta göstermek istiyorsanız, bu kodu kopyalayıp projenize yapıştırmanız yeterlidir.

  <RatingBar
    android:id="@+id/MyRating"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/getRating"
    android:isIndicator="true"
    android:numStars="5"
    android:stepSize="0.1" />

3
Android nedir: stepSize = "0.1"?
darwin


Ayrıca bu sayfanın sonundaki asnwer'ımı kontrol edin.
geliştirin

@HammadTariqSahi İyi, devam et ama kodumda bir sorun var mı? Herhangi bir şey varsa lütfen bildirin
Pir Fahim Shah

@PirFahimShah teşekkür ederim, kardeşim bu kodu kontrol etmedim. Bu yaklaşımı izlerseniz, derecelendirme çubuğunu iyileştirebilir ve stil oluşturabilirsiniz.
Developine

42

Bunu RatingBar, kullanmak scaleXve scaleYbuna göre ayarlamak için XML kodunda ayarlayabilirsiniz. "1.0" normal boyut olur ve ".0" içindeki herhangi bir şey küçültür, ayrıca "1.0" dan büyük olan herhangi bir şey onu artırır.

<RatingBar
  android:id="@+id/ratingBar1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:scaleX="0.5"
  android:scaleY="0.5" />

14
bununla ilgili sorun, derecelendirme çubuğunun, simgeler daha küçük olmasına rağmen yine de aynı genişlik ve yüksekliğe sahip olmasıdır. Bu, ilk ve son simgelerin yanında bir dizi sol ve sağ dolgu olduğundan hizalama sorunlarına neden olur. Örneğin, bu "XXXXX" gibi simgelerinizi istiyorsanız, ölçeklendirmeden sonra şu "----- XXXXX -----" gibi görünecektir, burada "-" boş bir alan ve "X" bir simgedir . Dolayısıyla, derecelendirme çubuğunuz boş alan nedeniyle sağa itilmiş gibi görünecek
theDazzler

1
Göreceli bir düzen kullandığınızı tahmin ediyorum. Bu bir acı ama istediğiniz android:layout_marginRight şekilde elde etmek için ve beğenileri kullanarak doğru konuma gitmek için ince ayar yapabilirsiniz .
ZeWolfe15

4
solda dolgu oluşturmadan ölçek elde etmek için android'i ekleyin: transformPivotX = "0dp"
darwin

37

Aşağıdaki snippet, ratingBar'ı yeniden boyutlandırmam için çalıştı

<RatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleIndicator"
    android:scaleX=".5"
    android:rating="3.5"
    android:scaleY=".5"
    android:transformPivotX="0dp"
    android:transformPivotY="0dp"
    android:max="5"/>

görüntü açıklamasını buraya girin


2
Bu derecelendirme çubuğu yarım dolgu, tam dolgu ve boş renk için derecelendirme çubuğu rengi nasıl değiştirilir?
Ganpat Kaliya

derecelendirme parametresi, derecelendirme çubuğunu doldurmak için kullanılır değil mi? Android: rating = "3,5" kullandım, böylece 3,5 yıldız doldurulur. xml'de max = 5 ayarlandığından 5'e kadar ayarlayabilirsiniz. Derecelendirme çubuğunun renklerini değiştirmek istiyorsanız, style.xml'de bir stil oluşturmanız gerekir, bu bağlantıya bakın: stackoverflow.com/a/35914622/2915785
Naveed Ahmad

android nasıl yapılır: transformPivotX = "0dp" android: transformPivotY = "0dp" Programlı olarak?
Salman Khakwani

1
@NaveedAhmad Ama sağda işe yaramaz bir dolgu var! Bunu nasıl kaldırabilirim ?!
Dr.jacky

@ Bay Hyde, raringbar stackoverflow
Naveed Ahmad

10

Çalışma Örneği

             <RatingBar
                style="@style/RatingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:numStars="5"
                android:rating="3.5"
                android:stepSize="0.5" />

ve bunu stiller xml dosyanıza ekleyin

<style name="RatingBar"   
parent="android:style/Widget.Material.RatingBar.Small">
<item name="colorControlNormal">@color/primary_light</item>
<item name="colorControlActivated">@color/primary_dark</item>
</style>

Bu şekilde ratingBar'ı özelleştirmenize gerek kalmaz.


9

Cevabımı burada kontrol edin . Bunu başarmanın en iyi yolu.

 <style name="MyRatingBar" parent="@android:style/Widget.RatingBar">
   <item name="android:minHeight">15dp</item>
   <item name="android:maxHeight">15dp</item>
   <item name="colorControlNormal">@color/white</item>
   <item name="colorControlActivated">@color/home_add</item>
</style>

ve gibi kullan

<RatingBar
    style="?android:attr/ratingBarStyleIndicator"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:isIndicator="false"
      android:max="5"
      android:rating="3"
      android:scaleX=".8"
      android:scaleY=".8"
      android:theme="@style/MyRatingBar" />

6
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>

5
Çözüme nasıl ulaştığınızı açıklar mısınız?
onebree

Bu RatingBardeğişmeye izin vermez .
CopsOnRoad

3

WeightSum ile Linearlayout'ta Derecelendirme çubuğunu kullanıyorsanız. Lütfen derecelendirme çubuğu için layout_weight atamadığınızdan emin olun. Bunun yerine, derecelendirme çubuğunu göreceli düzenin içine yerleştirir ve göreli düzene ağırlık verir. Derecelendirme çubuğu genişliği sarma içeriği oluşturun.

<RelativeLayout
    android:layout_width="0dp"
    android:layout_weight="30"
    android:layout_gravity="center"
    android:layout_height="wrap_content">
        <RatingBar
            android:id="@+id/userRating"
            style="@style/Widget.AppCompat.RatingBar.Small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:stepSize="1" />
</RelativeLayout>

3

Kullanmak Widget.AppCompat.RatingBariçin 2 stiliniz var; Indicatorve Smallsırasıyla büyük ve küçük bedenler için. Aşağıdaki örneğe bakın.

<RatingBar
    android:id="@+id/rating_star_value"
    style="@style/Widget.AppCompat.RatingBar.Small"
    ... />

2

Yalnızca varsayılan stile ihtiyacınız varsa, aşağıdaki genişliğe / yüksekliğe sahip olduğunuzdan emin olun, aksi takdirde sayılar karışabilir:

android:layout_width="wrap_content"
android:layout_height="wrap_content"

1
bu stili kullanmak style = "? android: attr / ratingBarStyleSmall" boyutu
küçültecek


2

Gelen RatingBaretiketi, bu iki satırı ekleyin

style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"

0

Programlı olarak derecelendirme çubuğu oluşturanlar ve varsayılan büyük derecelendirme çubuğu yerine küçük derecelendirme çubuğu ayarlamak isteyenler için

    private LinearLayout generateRatingView (float değeri) {
        LinearLayout linearLayoutRating = new LinearLayout (getContext ());
        linearLayoutRating.setLayoutParams (new TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity (Gravity.CENTER);
        RatingBar ratingBar = new RatingBar (getContext (), null, android.R.attr.ratingBarStyleSmall);
        (Yanlış) ratingBar.setEnabled;
        ratingBar.setStepSize (Float.parseFloat ("0.5")); // yarım yıldız etkinleştirmek için
        ratingBar.setNumStars (5);
        ratingBar.setRating (değer);
        linearLayoutRating.addView (ratingBar);
        dönüş lineerLayoutRating;
    }


0
 <RatingBar     android:id="@+id/id_tv_rating_bar"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/_20sdp"
                android:layout_marginLeft="@dimen/_80sdp"
                android:numStars="5"
                android:paddingTop="@dimen/_5sdp"
                android:rating="5" />

Sadece kullanın style="@style/Widget.AppCompat.RatingBar.Small", Elbette işe yarayacak!


0

Bu benim için çalıştı.
Bu resmi kontrol edin

            android:id="@+id/ratingBar"
            style="?android:attr/ratingBarStyleIndicator"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"
            android:scaleX=".8"
            android:scaleY=".8"
            android:stepSize="0.5"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.543"
            app:layout_constraintStart_toEndOf="@+id/title"
            app:layout_constraintTop_toTopOf="parent" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.