-4

我像这样动态地创建我的布局。我想将此评级栏中的星星颜色从默认的蓝色更改为黄色。

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;

    }

请有人帮我解决这个问题。提前致谢。

4

1 回答 1

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/>

而已。

于 2013-07-23T06:14:21.397 回答