在android中动态创建评级栏的评级栏中更改星星的颜色

时间:2013-07-23 05:59:51

标签: 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;

    }

有人可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:3)

选项1:

步骤1:通过克隆其中一个现有样式(来自$ ANDROID_HOME / platforms / $ SDK / data / res / values / 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 android:progressDrawable="@drawable/ratingbar_red/>

就是这样。