137

レイアウトにRatingBarを追加しました:

<RatingBar 
    android:id="@+id/ratingbar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:stepSize="1.0"
    />  

ただし、評価バーのデフォルトのスタイルは大きすぎます。
私はアンドロイドスタイルを追加することによってそれを変更しようとしました:style="?android:attr/ratingBarStyleSmall"

ただし、結果は小さすぎるため、このプロパティでレートを設定することはできません。

どうすればいいですか?

4

18 に答える 18

196

ここで 与えられたコードを接着する方法..。

ステップ1。あなたはであなた自身の評価星が必要res/drawableです...

フルスター

空の星

ステップ-2res/drawableあなたはratingstars.xml次のように必要です...

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

ステップ-3res/valuesあなたはstyles.xml次のように必要です...

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

ステップ-4レイアウトで..。

<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"    
/>  
于 2011-07-30T09:29:38.017 に答える
109

デフォルトのRatingBarウィジェットはsorta'lameです。

ソースは、あなたがすでに精通している ?android:attr/ratingBarStyleIndicator「」に加えて、スタイル「」を参照しています。は少し小さいですが、それでもかなり醜く、コメントはこれらのスタイルが「インタラクションをサポートしていない」と述べています。?android:attr/ratingBarStyleSmallratingBarStyleIndicator

あなたはおそらく自分で転がしたほうがいいでしょう。これを行う方法を示す、まともな見た目のガイドがhttp://kozyr.zydako.net/2010/05/23/pretty-ratingbar/にあります。(私はまだそれを自分でやっていませんが、1日かそこらで試みます。)

幸運を!

ps申し訳ありませんが、ソースへのリンクを投稿して、調べてみるつもりでしたが、私は新しいユーザーであり、複数のURLを投稿することはできません。ソースツリーを掘り下げると、frameworks / base / core / java / android / widget/RatingBar.javaにあります。

于 2010-07-04T03:07:21.507 に答える
72

使用するだけです:

android:scaleX="0.5"
android:scaleY="0.5"

必要に応じて倍率を変更してください。

左側にパディングを作成せずにスケーリングするには、

android:transformPivotX="0dp"
于 2014-08-27T12:40:38.263 に答える
44

にリスナーを追加する必要はありません?android:attr/ratingBarStyleSmall。追加するだけ android:isIndicator=falseで、クリックイベントがキャプチャされます。

<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" />
于 2013-07-13T18:14:31.650 に答える
20

OSによって実装された小さなもの

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    />
于 2013-06-12T09:21:43.363 に答える
16

これを適用します。

<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" />
于 2011-07-30T09:08:12.233 に答える
15

私は、上記の解決策で与えられたと思うよりも簡単で、自分で解決するよりも簡単な解決策を見つけました。小さな評価バーを作成し、それにonTouchListenerを追加しただけです。そこからクリックの幅を計算し、そこから星の数を決定します。これを数回使用したことがありますが、私が見つけた唯一の癖は、LinearLayoutで囲まない限り、小さな評価バーの描画が常にテーブルで正しく表示されるとは限らないことです(エディターでは正しく表示されますが、デバイスでは表示されません)。 。とにかく、私のレイアウトでは:

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

そして私の活動の中で:

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

これが他の誰かに役立つことを願っています。自分で描くよりも間違いなく簡単です(それも機能することがわかりましたが、星を簡単に使用したかっただけです)。

于 2012-09-17T03:31:55.647 に答える
6
 <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>

//これらの行を小さな評価バーに追加します

style = "?android:attr/ratingBarStyleSmall"
于 2019-02-27T11:33:01.623 に答える
5
<RatingBar
    android:id="@+id/rating_bar"
    style="@style/Widget.AppCompat.RatingBar.Small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
于 2017-08-17T14:54:21.340 に答える
3

Farryの答えは機能しますが、Samsungデバイスの場合、RatingBarは私が定義したものではなくランダムな青色を取りました。だから使用する

style="?attr/ratingBarStyleSmall"

代わりは。

それを使用する方法の完全なコード:

<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>
于 2017-12-01T13:51:39.240 に答える
3

私が得た最良の答え

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

scaleXscaleYの値を使用してサイズを増減します

于 2018-04-17T10:27:33.817 に答える
3

小さな評価バーのベストアンサー

<RatingBar
                    android:layout_width="wrap_content"
                    style = "?android:attr/ratingBarStyleSmall"
                    android:layout_height="wrap_content" />
于 2018-05-01T06:02:20.783 に答える
2

このコードを使用する

<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" />
于 2016-11-30T09:01:42.533 に答える
2
<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" />
于 2017-02-13T09:15:48.727 に答える
1

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" />
于 2017-08-17T14:13:32.320 に答える
0

多くの調査の結果、カスタム評価バーのサイズを縮小するための最良の解決策は、以下に説明するように、特定のサイズで描画可能な進行状況のサイズを取得することです。

xxhdpi-48 * 48 px

xhdpi-36 * 36 px

hdpi-24 * 24 px

そして、スタイルでは、すべての解像度でminheightとmaxheightを16dpに設定します。

これらのサイズは非常に互換性があり、ratingbar.smallスタイル属性と同等であることがわかったため、これが最良の小さいサイズの評価バーを取得するのに役立たない場合はお知らせください。

于 2017-07-20T18:59:27.110 に答える
0

評価バーxmlstyle= "?android:attr/ratingBarStyleSmall"で機能します。これを追加します。機能します。

于 2018-06-04T13:29:51.620 に答える
-4

私はこの問題を次のように解決します:style = "?android:attr / ratingBarStyleSmall"

于 2015-12-19T08:48:20.017 に答える