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.


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

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

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

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

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


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.


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

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

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>

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

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"

1
menggunakan gaya ini style = "? android: attr / ratingBarStyleSmall" akan mengurangi ukurannya
Mightian


2

Dalam RatingBartag, tambahkan dua baris ini

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

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


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!


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" />
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.