Ratingbar의 크기를 어떻게 줄일 수 있습니까?


129

내 활동에는 등급 막대가 있습니다. 그러나이 바의 크기가 너무 큽니다! 어떻게 작게 만들 수 있습니까?

편집하다

Gabriel Negut 덕분에 다음과 같은 스타일로 작업했습니다.

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

이제 크기는 줄어들었지만 별 수와 등급은 적용되지 않습니다 !!! 왜? 나는 그중 6 개가 선택된 7 개의 별을 가지고 있습니다.


당신은 Seekbar을 의미합니까? 높이와 너비를 설정하면 나에게 잘 작동합니다. 여기에 코드 스 니펫을 게시 할 수 있습니까?
Shailendra Singh Rajawat

나는 "편집"을 제거하고 그것을 대신 받아 들인 대답으로 만드는 것이 좋습니다. 그 또는 @GabrielNegut는 그런 종류의 솔루션을 포함하도록 자신의 답변을 편집 할 수 있습니다. 질문에 솔루션을 포함하면 Q & A 경험에서 벗어날 수 있습니다.
onebree

1
style="?android:attr/ratingBarStyleSmall"나를 위해 작동합니다.
Muhammad Shahzad

답변:


163

내가 게시 한 원래 링크가 이제 끊어졌습니다 (링크 만 게시하는 것이 가장 좋은 방법이 아닌 이유가 있습니다). 당신은 스타일에이 RatingBar중 하나에 ratingBarStyleSmall또는 상속 사용자 정의 스타일 Widget.Material.RatingBar.Small(당신을 가정하면 앱에서 재질 디자인을 사용하는)를.

옵션 1:

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

옵션 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
또는이 스타일 style = "? android : attr / ratingBarStyleSmall"을 사용하면 크기가 줄어 듭니다.
Mightian

1
그러나 오른쪽에는 쓸모없는 여분의 패딩이 있습니다! 그것을 제거하는 방법?!
Dr.jacky

참고 : 메이크업 폭 = "wrap_content"은 별도의 별을 없애
hkchakladar

72

이것은 못생긴 패딩없이 작은 크기로 등급 표시 줄을 줄이기 위해 많은 어려움을 겪은 후의 해결책이었습니다.

 <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
고르지 않은 패딩 문제를 완화하기 위해 transformPivot 사용법에 대한 답변을 공개하기 위해 로그인했습니다. 감사!
imin

마침내 더 이상 패딩이 없습니다!
Uday

멋진 답변! 감사합니다!
valerybodak

1
형제 뷰의 정렬 귀찮게 조정하고 여백과 간격의 불균형을 조정합니다.
Prateek Gupta

63

등급 막대를 작은 크기로 표시하려면이 코드를 복사하여 프로젝트에 붙여 넣으십시오.

  <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 : stepSize = "0.1"는 무엇입니까?
다윈


이 페이지의 끝에서 내 n을 확인하십시오.
개발

@HammadTariqSahi 그것은 좋다, 그것을 유지,하지만 내 코드에 문제가 있습니까? 어떤 것이 있으면 알려주세요
Pir Fahim Shah

@PirFahimShah 감사합니다, 친구이 코드를 확인하지 않았습니다. 해당 접근법을 따르는 경우 등급 막대를 개선하고 스타일을 지정할 수 있습니다.
개발

42

당신은에 대한 XML 코드에서 설정할 수 있습니다 RatingBar, 사용 scaleX하고 scaleY그에 따라 조정 할 수 있습니다. "1.0"은 보통 크기이며 ".0"에있는 것은 크기를 줄이며 "1.0"보다 큰 것은 증가합니다.

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

14
이 문제는 아이콘이 더 작더라도 등급 막대가 여전히 이전과 동일한 너비와 높이를 차지한다는 것입니다. 첫 번째 아이콘과 마지막 아이콘 옆에 많은 왼쪽 및 오른쪽 패딩이 있기 때문에 정렬 문제가 발생합니다. 예를 들어,이 "XXXXX"와 같은 아이콘을 원하는 경우 크기 조정 후 "---는 빈 공간이고"X "는 아이콘 인"----- XXXXX ----- "와 같이 표시됩니다. . 귀하의 평가 바는이 때문에 빈 공간의 오른쪽으로 밀렸다처럼 보일 것입니다 그래서
theDazzler

1
상대 레이아웃을 사용하고 있다고 생각합니다. 고통 스럽지만 android:layout_marginRight 원하는 것을 사용 하여 좋아하는 것을 사용하여 올바른 위치로 이동하도록 조정할 수 있습니다 .
ZeWolfe15

4
왼쪽에 패딩을 만들지 않고 스케일을 얻으려면 android : transformPivotX = "0dp"를 추가하십시오
darwin

37

아래 스 니펫은 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"/>

여기에 이미지 설명을 입력하십시오


2
이 등급 막대의 절반 채우기, 전체 채우기 및 빈 색상에 대한 ratting bar 색상을 변경하는 방법은 무엇입니까?
Ganpat Kaliya

등급 매개 변수는 등급 막대를 채우는 데 사용됩니까? android : rating = "3.5"를 사용 했으므로 3.5 개의 별이 채워집니다. xml에 max = 5가 설정되어 있으므로 최대 5까지 설정할 수 있습니다. 등급 막대의 색상을 변경하려면 style.xml에서 스타일을 만들어야합니다.이 링크를 참조하십시오. stackoverflow.com/a/35914622/2915785
Naveed Ahmad

android : transformPivotX = "0dp"android : transformPivotY = "0dp"프로그래밍 방식으로 어떻게?
살만 카와 니

1
@NaveedAhmad 그러나 오른쪽에는 쓸모없는 패딩이 있습니다! 그것을 제거하는 방법?!
Dr.jacky

@ Mr.Hyde raringbar의 스타일을 확인 stackoverflow.com/a/24407907/2915785
Naveed Ahmad

10

작업 예

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

스타일 xml 파일에 추가하십시오.

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

이렇게하면 ratingBar를 사용자 정의 할 필요가 없습니다.


9

내 대답을 확인 하십시오 . 그것을 달성하는 가장 좋은 방법.

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

같은 사용

<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
솔루션에 어떻게 도달했는지 자세히 설명해 주시겠습니까?
onebree

변경이 허용되지 않습니다 RatingBar.
CopsOnRoad

3

weightSum과 함께 Linearlayout에서 등급 막대를 사용하는 경우. 등급 표시 줄에 layout_weight를 지정하지 않아야합니다. 대신, 상대적 레이아웃 안에 등급 막대를 배치하고 상대적 레이아웃에 가중치를 부여합니다. 등급 막대 너비 랩 내용물을 만듭니다.

<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

를 사용 Widget.AppCompat.RatingBar하면 두 가지 스타일을 사용할 수 있습니다. IndicatorSmall각각 크고 작은 크기. 아래 예를 참조하십시오.

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

2

기본 스타일 만 필요한 경우 너비 / 높이가 다음과 같은지 확인하십시오. 그렇지 않으면 numStars가 엉망이 될 수 있습니다.

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

1
이 스타일 스타일을 사용하여 = : "안드로이드 ATTR / ratingBarStyleSmall"크기 줄일
Mightian


2

에서 RatingBar태그,이 두 줄을 추가

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

0

프로그래밍 방식으로 등급 표시 줄을 만들고 기본 큰 등급 표시 줄 대신 작은 등급 표시 줄을 설정하려는 경우

    개인 LinearLayout generateRatingView (부동 값) {
        LinearLayout linearLayoutRating = 새로운 LinearLayout (getContext ());
        linearLayoutRating.setLayoutParams (새로운 TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity (Gravity.CENTER);
        RatingBar ratingBar = 새로운 RatingBar (getContext (), null, android.R.attr.ratingBarStyleSmall);
        ratingBar.setEnabled (false);
        ratingBar.setStepSize (Float.parseFloat ( "0.5")); // 하프 스타 활성화
        ratingBar.setNumStars (5);
        ratingBar.setRating (value);
        linearLayoutRating.addView (ratingBar);
        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" />

그냥 style="@style/Widget.AppCompat.RatingBar.Small"작동합니다!


0

이것은 나를 위해 일했습니다.
이 이미지를 확인

            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" />
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.