2

私はここで少し困惑しています。私はandroid/java開発にかなり慣れていないので、ここで私が間違っていることを特定するのを手伝ってください。私はグーグル、アンドロイド開発、スタック全体を積極的にチェックしましたが、これに関する多くの情報を見つけることができませんでした。

theRatingとして数値を持つ文字列変数があります。例:2.5(10点満点)ratingbarstylesmallを使用してこれを表示しようとしています...これは、評価のみを表示するためのものであり、評価を表示するためのものではありません。

RatingBar rb = new RatingBar(this, null, android.R.attr.ratingBarStyleSmall);
rb.setIsIndicator(true);
rb.setNumStars(5);
rb.setStepSize((float) 0.5);
rb.setMax(10);
rb.setRating(Integer.parseInt(theRating));
llTextEtc.addView(rb);

星はLienarLayout(llTextEtc)内に正常に読み込まれ、適切な場所に表示されます。これは、私が望む適切なスタイルの星です(小さい)が...

それは完全にランダムです。8つ星を表示するものもあれば、15を表示してから、7に戻るものもあります。完全にランダム。私は何が間違っているのですか?

みんなありがとう

更新:受け入れられた回答の助けを借りて:wrap_contentレイアウトで評価バーを保持するためにLinearLayoutが追加されました。それ以外の場合、親(scrollview)はwrap_contentになりました。

LinearLayout llRating = new LinearLayout(this);
RatingBar rb = new RatingBar(this, null, android.R.attr.ratingBarStyleSmall);
  rb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  rb.setIsIndicator(true);
  rb.setNumStars(5);
  rb.setRating(Float.parseFloat(theRating)/2);
llRating.addView(rb);
llTextEtc.addView(llRating);

setStepSizeとsetMaxも削除され、Ratingは整数ではなくfloatに設定されました。星が計算されてから設定されます。isIndicatorがtrueの場合、stepSizeとMaxは役に立ちません。

4

1 に答える 1

2

ここでいくつかの問題に気づきました。まず、最も重要なのは、レイアウト幅をWRAP_CONTENTに設定して、正しく機能させる必要があることです。以下は開発ガイドからのものです:

The number of stars set (via setNumStars(int) or in an XML layout) will be shown when the layout width is set to wrap content (if another layout width is set, the results may be unpredictable).

次に、をに設定し、を使用して評価を設定しstepSizeていることに気付きました。最初に値をURLフィードからに変換し、次にそれを検証してから評価バーに渡します。floatIntergerFloat

于 2012-05-20T04:52:29.477 に答える