Làm cách nào tôi có thể giảm kích thước của Ratingbar?


129

Trong hoạt động của tôi, tôi có một số thanh Xếp hạng. Nhưng kích thước của thanh này là rất lớn! Làm thế nào tôi có thể làm cho nó nhỏ hơn?

Biên tập

Nhờ Gabriel Negut, tôi đã làm nó với phong cách sau:

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

Bây giờ, kích thước đã giảm nhưng số sao và xếp hạng không có hiệu lực !!! Tại sao? Tôi có 7 sao mà 6 trong số đó được chọn.


Bạn có nghĩa là một Seekbar? Thiết lập chiều cao và chiều rộng hoạt động tốt cho tôi. Bạn có thể gửi đoạn mã của bạn ở đây?
Shailendra Singh Rajaw

Tôi sẽ khuyên bạn nên xóa "chỉnh sửa" và thay vào đó làm cho nó là câu trả lời được chấp nhận. Điều đó hoặc @GabrielNegut có thể chỉnh sửa câu trả lời của anh ấy để bao gồm loại giải pháp đó. Bao gồm các giải pháp trong các loại câu hỏi lấy đi từ kinh nghiệm hỏi đáp.
onebree

1
style="?android:attr/ratingBarStyleSmall"làm việc cho tôi
Muhammad Shahzad

Câu trả lời:


163

Liên kết ban đầu tôi đã đăng hiện bị hỏng (có một lý do chính đáng tại sao chỉ đăng liên kết không phải là cách tốt nhất để đi). Bạn phải tạo kiểu RatingBarvới một ratingBarStyleSmallhoặc một kiểu tùy chỉnh kế thừa Widget.Material.RatingBar.Small(giả sử bạn đang sử dụng Thiết kế Vật liệu trong ứng dụng của mình).

Lựa chọn 1:

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

Lựa chọn 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
hoặc sử dụng style style = "? android: attr / ratingBarStyleSmall" sẽ giảm kích thước.
Mightian

1
Nhưng có một phần đệm thêm vô dụng ở bên phải! Làm thế nào để loại bỏ điều đó?!
Dr.jacky

Lưu ý: tạo width = "quấn_content" để thoát khỏi các ngôi sao phụ
hkchakladar

72

Đây là giải pháp của tôi sau rất nhiều nỗ lực để giảm thanh đánh giá ở kích thước nhỏ mà không có phần đệm xấu xí

 <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
Tôi đã đăng nhập chỉ để nâng cao câu trả lời của bạn về việc sử dụng TransformPOLL để giảm thiểu vấn đề đệm không đồng đều. Cảm ơn!
imin

Cuối cùng không còn đệm nữa !!
Uday

Câu trả lời tuyệt vời! Cảm ơn bạn!
valerybodak

1
Quy mô cả hai liên kết của quan điểm anh chị em và mất cân bằng lề và khoảng cách.
Prateek Gupta

63

Nếu bạn muốn hiển thị thanh đánh giá ở kích thước nhỏ, thì chỉ cần sao chép và dán mã này vào dự án của bạn.

  <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 là gì: stepSize = "0.1"?
darwin


cũng kiểm tra asnwer của tôi ở cuối trang này.
Phát triển

@HammadTariqSahi Thật tốt, hãy tiếp tục, nhưng có vấn đề gì trong mã của tôi không? Hãy cho tôi biết nếu có bất cứ điều gì, xin vui lòng
Pir Fahim Shah

@PirFahimShah thankyou, bro tôi chưa kiểm tra mã này. bạn có thể cải thiện và có thể định kiểu thanh đánh giá nếu bạn làm theo phương pháp đó.
Phát triển

42

Bạn có thể đặt nó trong mã XML cho RatingBar, sử dụng scaleXscaleYđiều chỉnh cho phù hợp. "1.0" sẽ là kích thước bình thường và bất cứ điều gì trong ".0" sẽ làm giảm nó, cũng như bất cứ điều gì lớn hơn "1.0" sẽ làm tăng nó.

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

14
vấn đề với điều này là thanh đánh giá vẫn chiếm cùng chiều rộng và chiều cao như trước mặc dù các biểu tượng nhỏ hơn. Điều này gây ra các vấn đề căn chỉnh vì có một loạt các phần đệm bên trái và bên phải bên cạnh các biểu tượng đầu tiên và cuối cùng. Ví dụ: nếu bạn muốn các biểu tượng của mình như "XXXXX" này, sau khi chia tỷ lệ, nó sẽ trông giống như "----- XXXXX -----" trong đó "-" là khoảng trống và "X" là biểu tượng . Vì vậy, thanh đánh giá của bạn sẽ có vẻ như bị đẩy sang phải vì không gian trống
theDazzler

1
Tôi đoán bạn đang sử dụng bố trí tương đối. Đó là một nỗi đau nhưng bạn có thể điều chỉnh nó để đi vào đúng vị trí bằng cách sử dụng android:layout_marginRight và thích để có được nó theo cách bạn muốn.
ZeWolfe15

4
để có được tỷ lệ mà không cần tạo phần đệm ở bên trái, hãy thêm android: TransformPOLLX = "0dp"
darwin

37

Đoạn mã dưới đây hoạt động để tôi thay đổi kích thước 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"/>

nhập mô tả hình ảnh ở đây


2
Làm thế nào để thay đổi màu thanh ratted cho thanh xếp hạng này một nửa điền, điền đầy đủ và màu trống?
Ganpat Kaliya

tham số đánh giá được sử dụng để điền vào thanh đánh giá phải không? Tôi đã sử dụng android: rating = "3.5" để 3,5 sao được lấp đầy. bạn có thể thiết lập tối đa 5 vì max = 5 được đặt trong xml. Nếu bạn muốn thay đổi màu sắc của thanh xếp hạng, bạn phải tạo một kiểu trong style.xml, hãy xem liên kết này: stackoverflow.com/a353914622/2915785
Naveed Ahmad

Làm thế nào để android: TransformPOLLX = "0dp" android: TransformPOLLY = "0dp" theo lập trình?
Salman Khakwani

1
@NaveedAhmad Nhưng có một phần đệm vô dụng ở bên phải! Làm thế nào để loại bỏ điều đó?!
Dr.jacky

@ Mr.Hyde kiểm tra các kiểu của raringbar stackoverflow.com/a/24407907/2915785
Naveed Ahmad

10

Ví dụ làm việc

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

và thêm phần này vào tệp xml kiểu của bạn

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

Bằng cách này, bạn không cần tùy chỉnh ratingBar.


9

Kiểm tra câu trả lời của tôi ở đây . Cách tốt nhất để đạt được nó.

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

và sử dụng như

<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
Bạn có thể giải thích làm thế nào bạn đi đến giải pháp?
onebree

Điều này không cho phép RatingBarthay đổi.
CopsOnRoad

3

Nếu bạn đang sử dụng thanh Xếp hạng trong Linearlayout với weightSum. Vui lòng đảm bảo rằng bạn không nên gán layout_ weight cho thanh xếp hạng. Thay vào đó, thanh đánh giá địa điểm đó bên trong bố cục tương đối và tạo trọng số cho bố cục tương đối. Thực hiện đánh giá chiều rộng thanh nội dung bọc.

<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

Sử dụng Widget.AppCompat.RatingBar, bạn có 2 kiểu để sử dụng; IndicatorSmallcho kích thước lớn và nhỏ tương ứng. Xem ví dụ dưới đây.

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

2

Nếu bạn chỉ cần kiểu mặc định, hãy đảm bảo rằng bạn có chiều rộng / chiều cao sau, nếu không, numStars có thể bị rối:

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

1
sử dụng kiểu này style = "? android: attr / ratingBarStyleSmall" sẽ giảm kích thước
Mightian


2

Trong RatingBarthẻ, thêm hai dòng này

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

0

Đối với những người đã tạo thanh xếp hạng theo chương trình và muốn đặt thanh xếp hạng nhỏ thay vì thanh xếp hạng lớn mặc định

    private linearLayout createdRatingView (giá trị float) {
        LinearLayout linearLayoutRating = new linearLayout (getContext ());
        linearLayoutRating.setLayoutParams (TableRow.LayoutParams mới (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity (Gravity.CENTER);
        RatingBar ratingBar = new RatingBar (getContext (), null, android.R.attr.ratingBarStyleSmall);
        ratingBar.setEnables (false);
        ratingBar.setStepSize (Float.parseFloat ("0.5")); // để bật nửa sao
        ratingBar.setNumStars (5);
        ratingBar.setRating (giá trị);
        linearLayoutRating.addView (ratingBar);
        trả về 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" />

Chỉ cần sử dụng style="@style/Widget.AppCompat.RatingBar.Small"nó sẽ làm việc cho chắc chắn!


0

Điều này làm việc cho tôi.
Kiểm tra hình ảnh này

            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" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.