我像这样动态创建我的布局。我想将此评级栏中的星形颜色从默认的蓝色更改为黄色。
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;
}
有人可以帮我解决这个问题。提前谢谢。
答案 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/>
就是这样。