RatingBar
を追加する方法の標準的な例に従っています。星の数を制御するには、_Android:numStars="5"
_を使用しようとしました。問題は、星の数がまったく何もしないように見えることです。ポートレートレイアウトでは、6つ星を獲得し、携帯電話をひっくり返すと約10個の星を獲得します。 XMLをロードするアクティビティ(myBar.setNumStars(5)
)に星の数を設定しようとしましたが、そのオプションでも成功しませんでした。
だから私の質問は、5つの星のみを表示するようにレイアウトをどのように定義するのですか? Set numStars
は機能しないようです。
事前に感謝、ローランド
<RatingBar
Android:id="@+id/rating"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
style="?android:attr/ratingBarStyleSmall"
Android:numStars="5"
Android:stepSize="0.1"
Android:isIndicator="true" />
コードで
mRatingBar.setRating(int)
RatingBar.setNumStar
ドキュメントには次のように書かれています:
表示する星の数を設定します。これらを適切に表示するために、このウィジェットのレイアウト幅はコンテンツをラップすることをお勧めします。
したがって、レイアウト幅をwrap_content
に設定すると、この問題を解決できます。
これは私のために働いた:RatingBar
は、LinearLayout
のコンテンツをラップするようにレイアウト幅を設定する以外に、RatingBar
の中にあるべきです。
さらに、layout_weight
、これはnumStars
属性に優先します。
<RatingBar
Android:id="@+id/ratingBar"
style="@style/custom_rating_bar"
Android:layout_width="wrap_content"
Android:layout_height="35dp"
Android:clickable="true"
Android:numStars="5"
/>
XMLファイルで星の数を設定します...スタイルまたはアクティビティ/フラグメントで指定する必要はありません...
また、星の数が星の数を超えているという問題に直面しています。このため、相対レイアウトまたは線形レイアウトのいずれかのレイアウトタイプについて心配する必要はありません。次のように幅を使用します。
ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
お願いしますavoidmatch_parent and fill_parent for ratingbar.
物事が役立つことを願っています。
XMLでnumStars="5"
を使用し、Android:layout_width="wrap_content"
を設定するだけです。
それから、スタイルやその他のものをいじることができますが、layout_widthの「wrap_content」がそのトリックです。
使用している場合
Android:layout_width="match_parent"
Wrap_contentを使用すると、セットのnumStarsのみが表示されます:)
Android:layout_width="wrap_content"
@Rolandという問題に直面していても、もう1つの属性が含まれていました
Android:layout_alignParentRight="true"
xMLのRatingBar
宣言で。この属性により、必要な星の設定とNumStars
の設定が妨げられました
出くわした問題を投稿してください!
私にとっては、パディングを削除するまで問題がありました。特定のデバイスには、パディングに対応するためにビューのサイズを変更せず、代わりにコンテンツを圧縮するバグがあるようです。
padding
を削除し、代わりにlayout_margin
を使用します。
単純な星評価を丸い数字で表示するには、このコードを使用します
public static String getIntToStar(int starCount) {
String fillStar = "\u2605";
String blankStar = "\u2606";
String star = "";
for (int i = 0; i < starCount; i++) {
star = star.concat(" " + fillStar);
}
for (int j = (5 - starCount); j > 0; j--) {
star = star.concat(" " + blankStar);
}
return star;
}
そして、このように使用します
button.setText(getIntToStar(4));
XMLレイアウトの横に5つの星のデフォルトの評価を追加できます
Android:rating="5"
編集:
<RatingBar
Android:id="@+id/rb_vvm"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center_horizontal"
Android:layout_marginBottom="@dimen/space2"
Android:layout_marginTop="@dimen/space1"
style="@style/RatingBar"
Android:numStars="5"
Android:stepSize="1"
Android:rating="5" />
デフォルト値は、xmlレイアウトで android:rating で設定されます。
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" >
<RatingBar
Android:id="@+id/ruleRatingBar"
Android:isIndicator="true"
Android:numStars="5"
Android:stepSize="0.5"
style="?android:attr/ratingBarStyleSmall"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
/>
</LinearLayout>
View Android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)
すべての属性が適切に機能するには、以下のパラメータが必要です
root
をparent
に設定しますattachToRoot
as false
例: convertView = inflater.inflate(R.layout.myId、parent、false);
RatingBar
は、属性Android:stretchColumns = "*"
でテーブルに囲まれているため、星の最大数まで伸びていることがわかりました。
すべての列からstretchCoulumns
を削除すると、Android:numStars
値に従ってRatingBar
が表示されます