2013-07-23 53 views
-4

中動態創建評級欄的評級欄中更改星星的顏色我像這樣動態創建我的佈局。我想將此評分欄中的星星顏色從默認藍色更改爲黃色。在android

View insertPhoto(int id, int i){ 
    layout = new LinearLayout(getApplicationContext()); 
    layout.setLayoutParams(new LayoutParams(180, 250)); 
    layout.setGravity(Gravity.CENTER); 
    layout.setOrientation(1); 
    layout.setId(i); 
    FrameLayout fl=new FrameLayout(getApplicationContext()); 
    fl.setLayoutParams(new LayoutParams(116, 116)); 
    imageView = new ImageView(getApplicationContext()); 
    imageView.setLayoutParams(new LayoutParams(116,116)); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    imageView.setImageResource(id); 
    imageView.setId(i); 
    imgoff = new ImageView(getApplicationContext()); 
    imgoff.setLayoutParams(new LayoutParams(50,116)); 
    imgoff.setScaleType(ImageView.ScaleType.FIT_END); 
    imgoff.setImageResource(getResources().getIdentifier("offer","drawable", getPackageName())); 
    // imgoff.setOnClickListener(listener); 
    fl.addView(imageView); 
    fl.addView(imgoff); 
    tv=new TextView(getApplicationContext()); 
    tv.setLayoutParams(new LayoutParams(116,20)); 
    tv.setText(namesArr[i]); 
    tv.setTextColor(Color.BLACK); 
    rb=new RatingBar(getApplicationContext(),null,android.R.attr.ratingBarStyleSmall); 
    rb.setLayoutParams(new LayoutParams(80,50)); 
    rb.setIsIndicator(true); 
    rb.setNumStars(5); 
    rb.setRating(rateFArr[i]); 
    layout.addView(fl); 
    layout.addView(tv); 
     layout.addView(rb); 
    layout.setOnClickListener(listener); 
    return layout; 

    } 

請有人可以幫我解決這個問題。提前致謝。

回答

3

選項1:

第1步:創建你自己的風格,通過克隆現有樣式之一(從$ ANDROID_HOME /平臺/ $ SDK /數據/ RES /價值/ styles.xml),把它在您自己的項目的styles.xml中,並在將小部件添加到佈局時引用它。

步驟2:爲RatingBar創建您自己的LayerDrawable XML資源,指向用於該欄的合適圖像。原始樣式會將您指向您可以與之比較的現有資源。然後,調整您的樣式以使用您自己的LayerDrawable資源,而不是內置的。

選項2:

你確實需要3幅星圖像(red_star_full.png,red_star_half.png和red_star_empty.png)和一個XML,僅此而已。

把這3張圖片放在res/drawable中。

將有以下ratingbar_red.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/red_star_empty" /> 
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/red_star_half" /> 
    <item android:id="@android:id/progress" android:drawable="@drawable/red_star_full" /> 
</layer-list> 

,最後,告訴你的RatingBar定義中使用此,即

<RatingBar android:progressDrawable="@drawable/ratingbar_red/> 

就是這樣。

+0

rb = new RatingBar(getApplicationContext(),null,R.Style.ratingbar_red);仍然沒有制定出評級欄本身消失。我甚至檢查了佈局大小都很好。 – user2609258

+0

嗨,周杰倫,我試過這個解決方案,但是當我嘗試將評分設置爲1.1,1.2等等時,它顯示爲1.5。我拍攝了3張明星影像,一張是空的,一張是滿的,另一張是滿的。我認爲它應該在它們之間進行插值以獲得小數部分,我只是想知道是否有其他人有同樣的問題,或者我在做什麼明顯錯誤? –

+0

這個答案幫了我很多!謝謝你,先生! – JozeRi