Ratingbarのサイズを縮小するにはどうすればよいですか?


129

私の活動では、いくつかの評価バーがあります。しかし、このバーのサイズはとても大きいです!どうすれば小さくできますか?

編集する

Gabriel Negutのおかげで、私は次のスタイルでそれを行いました:

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

現在、サイズは小さくなっていますが、星の数と評価は有効になりません!!! どうして?星が7つあり、そのうち6つが選択されています。


シークバーのことですか?高さと幅を設定するとうまくいきます。ここにコードスニペットを投稿できますか?
Shailendra Singh Rajawat、2011年

「編集」を削除して、代わりにそれを受け入れられた回答にすることをお勧めします。それまたは@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 2014

1
しかし、右側に無用な余分なパディングがあります!それを削除するには?!
Dr.jacky

注:余分な星を取り除くには、width = "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を使用して不均一なパディングの問題を緩和することに関するあなたの回答に賛成するためにログインしました。ありがとう!
イミン2015

最後にもうパディングはありません!!
2016年

素晴らしい答えです!ありがとうございました!
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"とは何ですか?
ダーウィン2016


このページの最後にある私の質問も確認してください。
2016年

@HammadTariqSahiそれは良いです、それを続けてください、しかし私のコードに問題はありますか?何かありましたらお知らせください
Pir Fahim Shah、

@PirFahimShahありがとう、仲間私はこのコードをチェックしていません。あなたがそのアプローチに従えば、あなたは評価バーを改善し、スタイルを整えることができます。
2016年

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」のようなアイコンが必要な場合、スケーリング後は「----- XXXXX -----」のようになります。ここで、「-」は空のスペース、「X」はアイコンです。そのため、空のスペースがあるため、評価バーは右に押されたように見えます
theDazzler

1
相対レイアウトを使用していると思います。それは苦痛ですが、あなたはそれを微調整して正しい位置に移動することができ android:layout_marginRight ます。
ZeWolfe15 14

4
左側にパディングを作成せずにスケールを取得するには、android:transformPivotX = "0dp"を追加します
darwin

37

以下のスニペットは私が評価バーのサイズを変更するのに役立ちました

<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
この評価バーの半分塗りつぶし、完全塗りつぶし、空の色のラッティングバーの色を変更するにはどうすればよいですか。
Ganpat Kaliya

評価パラメータは、評価バーを埋めるために使用されますか?私はandroid:rating = "3.5"を使用したので、3.5つ星が塗りつぶされています。xmlでmax = 5が設定されているため、最大5を設定できます。あなたがレーティングバーの色を変更したい場合は、style.xmlでスタイルを作成する必要があり、このリンクを参照してください。stackoverflow.com/a/35914622/2915785
Naveedアフマド

android:transformPivotX = "0dp" android:transformPivotY = "0dp"をプログラムで実行する方法
Salman Khakwani

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 2018

3

LinearSlayoutでweightSumを使用して評価バーを使用している場合。評価バーに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、2つのスタイルを使用できます。IndicatorそしてSmall、それぞれ大小サイズの。以下の例を参照してください。

<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
このスタイルを使用すると、style = "?android:attr / ratingBarStyleSmall"によりサイズが小さくなります
Mightian


2

ではRatingBar、タグ、次の2行を追加します

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

0

プログラムで評価バーを作成し、デフォルトの大きな評価バーの代わりに小さな評価バーを設定したい人向け

    プライベートLinearLayout generateRatingView(float value){
        LinearLayout linearLayoutRating = new LinearLayout(getContext());
        linearLayoutRating.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT、TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity(Gravity.CENTER);
        RatingBar ratingBar = new 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.