2012-05-20 30 views
2

我發現自己在這裏有點困惑。我對android/java開發相當陌生,所以請在這裏幫助確定我做錯了什麼。我在整個谷歌,安卓開發和堆棧中積極地進行了檢查,但是在這方面找不到太多信息。Android ratingbar「ratingBarStyleSmall」載入隨機數量的星星

我有一個數字作爲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顆,等等。完全隨機的。我究竟做錯了什麼?

謝謝你們

更新: 與接受的答案幫助:加入 一個的LinearLayout將與WRAP_CONTENT佈局的RatingBar。否則,父(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不起作用。

+0

'theRating'從哪裏來? – FoamyGuy

+1

*「在整個谷歌中大力檢查」*我聽說過「貪婪搜索」,但什麼是「積極搜索」?作爲一般性提示「不要生氣」。 ;) –

+0

@Tim theRating來自分割成數組的URL供稿。 theRating = feedArray [4]; -AndrewThompson哈哈 - 積極的很多短語和關鍵詞和憤怒。好的一個 – Onimusha

回答

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

第二,我注意到,您已設置的stepSizefloat和你塞汀使用Interger評級。我會首先將URL Feed中的值轉換爲Float,然後在將其傳遞到評級欄之前進行驗證。

+0

謝謝。有效。我不得不在linearlayout裏添加ratingbar,然後addview。我還更新了我的代碼,以解釋一些有助於其他人的事情。我確定我不需要一個新的LinearLayout,但現在這是一個修復。謝謝cstrutton – Onimusha

+0

很高興我能幫上忙。這裏的關鍵似乎是WRAP_CONTENT佈局寬度。您應該能夠將任何視圖組用作容器。 – cstrutton