Bagaimana saya bisa mengurangi ukuran Ratingbar?

129

Dalam aktivitas saya, saya memiliki beberapa bar Nilai. Tapi ukuran bar ini sangat besar! Bagaimana saya bisa membuatnya lebih kecil?

Edit

Terima kasih kepada Gabriel Negut, saya melakukannya dengan gaya berikut:

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

Sekarang, ukurannya berkurang tetapi jumlah bintang dan peringkat tidak berpengaruh !!! Mengapa? Saya memiliki 7 bintang yang 6 di antaranya dipilih.

Hesam
sumber
Apakah yang Anda maksud adalah Seekbar? Pengaturan tinggi dan lebar berfungsi dengan baik untuk saya. Bisakah Anda memposting potongan kode Anda di sini?
Shailendra Singh Rajawat
Saya akan merekomendasikan menghapus "edit" dan bukannya membuatnya menjadi jawaban yang diterima. Itu atau @GabrielNegut dapat mengedit jawabannya untuk memasukkan solusi semacam itu. Memasukkan solusi dalam jenis pertanyaan akan menghilangkan pengalaman T&J.
onebree
1
style="?android:attr/ratingBarStyleSmall"bekerja untukku.
Muhammad Shahzad

Jawaban:

163

Tautan asli yang saya poskan sekarang rusak (ada alasan bagus mengapa hanya memposting tautan bukanlah cara terbaik untuk pergi). Anda harus mendesainnya RatingBardengan salah satu ratingBarStyleSmallatau gaya khusus yang diwarisi dari Widget.Material.RatingBar.Small(dengan asumsi Anda menggunakan Desain Material di aplikasi Anda).

Pilihan 1:

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

Pilihan 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"
    ... />
Gabriel Negut
sumber
21
atau menggunakan style style ini = "? android: attr / ratingBarStyleSmall" akan mengurangi ukurannya.
Mightian
1
Tapi ada bantalan tambahan yang tidak berguna di sebelah kanan! Bagaimana cara menghapusnya ?!
Dr.jacky
Catatan: make width = "wrap_content" untuk menyingkirkan bintang tambahan
hkchakladar
72

Ini adalah solusi saya setelah banyak berjuang untuk mengurangi rating bar dalam ukuran kecil tanpa bantalan yang jelek

 <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" />
TechArcSri
sumber
3
Saya masuk hanya untuk meningkatkan jawaban Anda mengenai penggunaan transformPivot untuk mengurangi masalah padding yang tidak rata. Terima kasih!
imin
Akhirnya tidak ada lagi bantalan !!
Uday
Jawaban yang luar biasa! Terima kasih!
valerybodak
1
Skala mengganggu keselarasan pandangan saudara dan margin dan jarak ketidakseimbangan.
Prateek Gupta
63

Jika Anda ingin menampilkan bilah rating dalam ukuran kecil, cukup salin dan tempel kode ini di proyek Anda.

  <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" />
Pir Fahim Shah
sumber
3
Apa itu android: stepSize = "0,1"?
darwin
juga periksa asnwer saya di akhir halaman ini.
Kembangkan
@HammadTariqSahi Bagus, teruskan, Tapi apakah ada masalah dalam kode saya? Beri tahu saya jika ada sesuatu, tolong
Pir Fahim Shah
@PirFahimShah terima kasih, bro aku belum memeriksa kode ini. Anda dapat meningkatkan dan dapat gaya bar peringkat jika Anda mengikuti pendekatan itu.
Kembangkan
42

Anda dapat mengaturnya dalam kode XML untuk RatingBar, gunakan scaleXdan scaleYuntuk menyesuaikannya. "1.0" akan menjadi ukuran normal, dan apa pun dalam ".0" akan menguranginya, juga sesuatu yang lebih besar dari "1.0" akan meningkatkannya.

<RatingBar
  android:id="@+id/ratingBar1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:scaleX="0.5"
  android:scaleY="0.5" />
ZeWolfe15
sumber
14
masalah dengan ini adalah bahwa ratingbar masih memakan lebar dan tinggi yang sama seperti sebelumnya meskipun ikon lebih kecil. Ini menyebabkan masalah penyelarasan karena ada banyak bantalan kiri dan kanan di sebelah ikon pertama dan terakhir. Misalnya, jika Anda ingin ikon Anda seperti ini "XXXXX", setelah penskalaan akan terlihat seperti ini "----- XXXXX -----" di mana "-" adalah ruang kosong dan "X" adalah ikon . Jadi bilah peringkat Anda akan tampak seperti didorong ke kanan karena ruang kosong
theDazzler
1
Saya kira Anda menggunakan tata letak relatif. Ini menyebalkan tetapi Anda dapat men-tweak untuk pergi ke posisi yang tepat dengan menggunakan android:layout_marginRight dan suka untuk mendapatkannya seperti yang Anda inginkan.
ZeWolfe15
4
untuk mendapatkan skala tanpa membuat padding di sebelah kiri tambahkan android: transformPivotX = "0dp"
darwin
37

Cuplikan di bawah ini berfungsi untuk saya mengubah ukuran ratingBar

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

masukkan deskripsi gambar di sini

Naveed Ahmad
sumber
2
bagaimana cara mengubah warna bar ratting untuk bar rating isi setengah, isi penuh, dan warna kosong
Ganpat Kaliya
parameter rating digunakan untuk mengisi bar penilaian, kan? Saya menggunakan android: rating = "3.5" sehingga 3,5 bintang terisi. Anda dapat mengatur hingga 5 karena maks = 5 diatur dalam xml. Jika Anda ingin mengubah warna bilah penilaian, Anda harus membuat gaya di style.xml lihat tautan ini: stackoverflow.com/a/35914622/2915785
Naveed Ahmad
bagaimana cara android: transformPivotX = "0dp" android: transformPivotY = "0dp" Secara terprogram?
Salman Khakwani
1
@NaveedAhmad Tapi ada bantalan yang tidak berguna di sebelah kanan! Bagaimana cara menghapusnya ?!
Dr.jacky
@ Mr.Hyde memeriksa gaya raringbar stackoverflow.com/a/24407907/2915785
Naveed Ahmad
10

Contoh Kerja

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

dan tambahkan ini dalam file gaya xml Anda

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

Dengan cara ini Anda tidak perlu menyesuaikan ratingBar.

Berkembang
sumber
9

Periksa jawaban saya di sini . Cara terbaik untuk mencapainya.

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

dan gunakan like

<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" />
AMAN SINGH
sumber
6
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>
nafees4343
sumber
5
Bisakah Anda menguraikan bagaimana Anda sampai pada solusi?
onebree
Ini tidak memungkinkan RatingBaruntuk diubah.
CopsOnRoad
3

Jika Anda menggunakan Rating bar di Linearlayout dengan weightSum. Harap pastikan bahwa Anda tidak harus menetapkan Lay_ Layout untuk bar rating. Alih-alih, tempatkan bar peringkat di dalam tata letak relatif dan memberi bobot pada tata letak relatif. Buat konten bungkus lebar rating bar.

<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>
Varnith Kumar M
sumber
3

Menggunakan Widget.AppCompat.RatingBar, Anda memiliki 2 gaya untuk digunakan; Indicatordan Smalluntuk ukuran besar dan kecil. Lihat contoh di bawah ini.

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

Jika Anda hanya memerlukan gaya default, pastikan Anda memiliki lebar / tinggi berikut, jika tidak numStars bisa kacau:

android:layout_width="wrap_content"
android:layout_height="wrap_content"
Sean
sumber
1
menggunakan gaya ini style = "? android: attr / ratingBarStyleSmall" akan mengurangi ukurannya
Mightian
2

Dalam RatingBarmemberikan atribut:

style="?android:attr/ratingBarStyleIndicator" 
rajlaxmi_jagdale
sumber
2

Dalam RatingBartag, tambahkan dua baris ini

style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"
Mirza Haider
sumber
0

Bagi mereka yang membuat bilah rating secara terprogram dan ingin mengatur bilah rating kecil alih-alih bilah rating besar default

    pribadi LinearLayout generateRatingView (nilai float) {
        LinearLayout linearLayoutRating = LinearLayout baru (getContext ());
        linearLayoutRating.setLayoutParams (TableRow baru. LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity (Gravity.CENTER);
        RatingBar ratingBar = RatingBar baru (getContext (), null, android.R.attr.ratingBarStyleSmall);
        ratingBar.setEnabled (false);
        ratingBar.setStepSize (Float.parseFloat ("0,5")); // untuk mengaktifkan setengah bintang
        ratingBar.setNumStars (5);
        ratingBar.setRating (nilai);
        linearLayoutRating.addView (ratingBar);
        kembali linearLayoutRating;
    }

Sachin Tanpure
sumber
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" />

Cukup gunakan style="@style/Widget.AppCompat.RatingBar.Small"itu akan bekerja untuk Tentu!

Prateek Gupta
sumber
0

Ini Berhasil untuk saya.
Periksa gambar ini

            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" />
Syed Umair
sumber