Saya telah menambahkan RatingBar dalam tata letak:
<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="1.0"
/>
Tetapi gaya default untuk bilah peringkat terlalu besar.
Saya mencoba mengubahnya dengan menambahkan gaya android:style="?android:attr/ratingBarStyleSmall"
Tetapi hasilnya terlalu kecil dan tidak mungkin untuk menetapkan tarif dengan properti ini.
Bagaimana saya bisa melakukannya?
Cara merekatkan kode yang diberikan di sini ...
Langkah 1. Anda membutuhkan bintang peringkat Anda sendiri di
res/drawable
...Langkah-2 Dalam
res/drawable
Anda perluratingstars.xml
sebagai berikut ...<?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>
Langkah-3 Dalam
res/values
Anda perlustyles.xml
sebagai berikut ...<?xml version="1.0" encoding="utf-8"?> <resources> <style name="foodRatingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/ratingstars</item> <item name="android:minHeight">22dip</item> <item name="android:maxHeight">22dip</item> </style> </resources>
Langkah-4 Dalam tata letak Anda ...
<RatingBar android:id="@+id/rtbProductRating" android:layout_height="wrap_content" android:layout_width="wrap_content" android:numStars="5" android:rating="3.5" android:isIndicator="false" style="@style/foodRatingBar" />
sumber
Gunakan saja:
android:scaleX="0.5" android:scaleY="0.5"
Ubah faktor skala sesuai kebutuhan Anda.
Untuk menskalakan tanpa membuat padding di sebelah kiri juga tambahkan
android:transformPivotX="0dp"
sumber
codeandroid:scaleX="0.75" android:scaleY="0.75" android:layout_marginRight="-25dp"
android:layout_height="40dp"
Tidak perlu menambahkan pendengar ke
?android:attr/ratingBarStyleSmall
. Cukup tambahkanandroid:isIndicator=false
dan itu akan menangkap peristiwa klik, misalnya<RatingBar android:id="@+id/myRatingBar" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:isIndicator="false" />
sumber
yang kecil diterapkan oleh OS
<RatingBar android:id="@+id/ratingBar" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" />
sumber
terapkan ini.
<RatingBar android:id="@+id/indicator_ratingbar" style="?android:attr/ratingBarStyleIndicator" android:layout_marginLeft="5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" />
sumber
Saya menemukan solusi yang lebih mudah daripada yang saya pikirkan diberikan oleh yang di atas dan lebih mudah daripada menggulung solusi Anda sendiri. Saya hanya membuat bar peringkat kecil, lalu menambahkan onTouchListener padanya. Dari sana saya menghitung lebar klik dan menentukan jumlah bintang dari itu. Setelah menggunakan ini beberapa kali, satu-satunya kekhasan yang saya temukan adalah bahwa gambar bilah peringkat kecil tidak selalu muncul tepat di tabel kecuali saya melampirkannya dalam LinearLayout (terlihat tepat di editor, tetapi tidak perangkatnya) . Bagaimanapun, dalam tata letak saya:
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <RatingBar android:id="@+id/myRatingBar" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" /> </LinearLayout>
dan dalam aktivitas saya:
final RatingBar minimumRating = (RatingBar)findViewById(R.id.myRatingBar); minimumRating.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View view, MotionEvent event) { float touchPositionX = event.getX(); float width = minimumRating.getWidth(); float starsf = (touchPositionX / width) * 5.0f; int stars = (int)starsf + 1; minimumRating.setRating(stars); return true; } });
Saya harap ini membantu orang lain. Jelas lebih mudah daripada menggambar sendiri (meskipun saya telah menemukan itu juga berfungsi, tetapi saya hanya ingin penggunaan bintang yang mudah).
sumber
ratingBarStyleSmall
bintang-bintangnya terlalu kecil untuk bisa berguna. Saya pikir saya harus menggulung sendiri untuk mendapatkan bintang berukuran sedang.<RatingBar android:rating="3.5" android:stepSize="0.5" android:numStars="5" style = "?android:attr/ratingBarStyleSmall" android:theme="@style/RatingBar" android:layout_width="wrap_content" android:layout_height="wrap_content"/> // if you want to style <style name="RatingBar" parent="Theme.AppCompat"> <item name="colorControlNormal">@color/colorPrimary</item> <item name="colorControlActivated">@color/colorAccent</item> </style>
// tambahkan baris ini untuk bilah peringkat kecil
style = "?android:attr/ratingBarStyleSmall"
sumber
<RatingBar android:id="@+id/rating_bar" style="@style/Widget.AppCompat.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" />
sumber
meskipun jawaban Farry berfungsi, untuk perangkat Samsung RatingBar mengambil warna biru acak alih-alih yang saya tentukan. Jadi gunakan
style="?attr/ratingBarStyleSmall"
sebagai gantinya.
Kode lengkap cara menggunakannya:
<android.support.v7.widget.AppCompatRatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="?attr/ratingBarStyleSmall" // use smaller version of icons android:theme="@style/RatingBar" android:rating="0" tools:rating="5"/> <style name="RatingBar" parent="Theme.AppCompat"> <item name="colorControlNormal">@color/grey</item> <item name="colorControlActivated">@color/yellow</item> <item name="android:numStars">5</item> <item name="android:stepSize">1</item> </style>
sumber
Jawaban terbaik yang saya dapat
<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>
pengguna seperti ini
<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" />
Kenaikan / Penurunan ukuran dengan menggunakan scaleX dan ScaleY nilai
sumber
Jawaban Terbaik untuk ratingbar kecil
<RatingBar android:layout_width="wrap_content" style = "?android:attr/ratingBarStyleSmall" android:layout_height="wrap_content" />
sumber
Gunakan Kode Ini
<RatingBar android:id="@+id/ratingBarSmalloverall" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="30dp" android:isIndicator="false" android:numStars="5" />
sumber
<RatingBar android:id="@+id/ratingBar1" android:numStars="5" android:stepSize=".5" android:rating="3.5" style="@android:style/Widget.DeviceDefault.RatingBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" />
sumber
gunakan kode berikut untuk bar peringkat kecil dengan acara onTouch
enter code here <RatingBar android:id="@+id/ratingBar" style="?android:ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:isIndicator="false" android:rating="4" android:stepSize="0.5" />
sumber
Setelah banyak penelitian, saya menemukan solusi terbaik untuk mengurangi ukuran bilah peringkat khusus adalah dengan mendapatkan ukuran kemajuan yang dapat digambar dalam ukuran tertentu seperti yang disebutkan di bawah ini:
xxhdpi - 48 * 48 piksel
xhdpi - 36 * 36 px
hdpi - 24 * 24 piksel
Dan dengan gaya, letakkan minheight dan maxheight sebagai 16 dp untuk semua Resolusi.
Beri tahu saya jika ini tidak membantu Anda mendapatkan rating bar ukuran kecil terbaik karena ukuran ini menurut saya sangat kompatibel dan setara dengan atribut gaya ratingbar.small.
sumber
Ini bekerja untuk saya di bar peringkat xml style = "? Android: attr / ratingBarStyleSmall" tambahkan this.it akan berhasil.
sumber
Saya memecahkan masalah ini sebagai berikut: style = "? Android: attr / ratingBarStyleSmall"
sumber