2013-09-25 41 views
3

我已經創建了我的自定義樣式RatingBar following http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/這完美的當我在我的XML文件中聲明我的RatingBar。不過,我還需要在我的Java代碼來創建動態ratingbars,這是我做的:RatingBar自定義樣式不顯示

for (int i=0; i<Math.min(10, n); i++){ 
       TableRow row = new TableRow(RegisterActivity.this); 
       TextView t = new TextView(RegisterActivity.this);  
       t.setText((i+1) + ". " + myCList.get(i) + "/" + myWList.get(i) + " (" + mySList.get(i) + ")"); 
       RatingBar c = new RatingBar(RegisterActivity.this, null, R.style.foodRatingBar); 
       Double d=(Double) myRList.get(i); 
       c.setRating(d.floatValue()); 
       c.setClickable(false); 
       row.addView(t); 
       row.addView(c); 
       table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      } 

的問題是,ratingbars不顯示,當我以這種方式使用它們。這是我的自定義樣式:

<style name="foodRatingBar" parent="@android:style/Widget.RatingBar"> 
    <item name="android:progressDrawable">@drawable/food_ratingbar_full</item> 
    <item name="android:minHeight">50dp</item> 
    <item name="android:maxHeight">50dp</item> 
</style> 

當我使用標準小樣式作爲ratingbars時,相同的過程可以很好地工作。有人知道爲什麼嗎?

+0

它看起來像R.style.foodRatingBar(或任何其他自定義樣式)不被RatingBar構造函數識別,而標準的android.R.attr.ratingbarsmall是。這看起來很奇怪! – splinter123

回答

1

我不知道爲什麼會發生,但作爲變通方法,您可以在添加之前在佈局聲明你的RatingBar和它充氣:

<RatingBar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="@style/foodRatingBar" /> 

RatingBar c = (RatingBar) iflater.inflate(R.layout.rating_bar, row, false); 
+0

這不是很方便,因爲我從一開始就不知道我需要多少個ratingbars。他們被放置在一個滾動條內,可能有2或30個...... – splinter123

+0

您可以在for循環中膨脹酒吧,只需更改創建酒吧即可充氣。對於一些小部件來說,這是應用風格最簡單的方法。 – Bracadabra

+0

感謝它的工作!然而,不完全如此,我仍然需要在最後添加row.addView(c),這對我來說似乎很奇怪,因爲inflate命令應該已經處理好了...... – splinter123