我怎样才能设置Android评分栏中风的颜色? (不是星星的颜色,而是BORDER)

我是一个android初学者,我想做我的自定义ratingBar。

免责声明:这不是重复的。 因为我读过的所有post都询问如何改变星星的颜色以及如何去除中风。 那不是我想要的。 我想要中风,并能够改变边界的颜色。

有空的时候有透明黄色的笔触,黄色的背景和笔画为一半并填充。

我不想使用PNG。 我已经有自己的,但是他们太小了。 我只是不想让devise师创造新的,如果我只能使用XML属性和drawable来制作星星。

<RatingBar android:id="@+id/thread_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:isIndicator="true" android:numStars="5" android:progressBackgroundTint="@color/gray" android:progressTint="@color/gold" android:rating="2.5" android:secondaryProgressTint="@color/gray" android:stepSize="0.5" style="?android:attr/ratingBarStyleSmall" /> 

我和另一位工程师一起工作。 他还写了一个java文件的代码

 private void setRatingBarStart(RatingBar rating_bar) { LayerDrawable stars = (LayerDrawable) rating_bar.getProgressDrawable(); stars.getDrawable(2) .setColorFilter(getResources().getColor(R.color.gold), PorterDuff.Mode.SRC_ATOP); // for filled stars stars.getDrawable(1) .setColorFilter(getResources().getColor(R.color.light_gray), PorterDuff.Mode.SRC_ATOP); // for half filled stars stars.getDrawable(0) .setColorFilter(getResources().getColor(R.color.light_gray), PorterDuff.Mode.SRC_ATOP); // for empty stars 

[所以现在它有一个灰色的背景,黄色填充,现在没有中风。

在这里输入图像说明

我希望它有透明背景,黄色中风和黄色填充。 看起来像这样 在这里输入图像说明

我已经知道如何设置透明背景,并使其变黄。 我只是不知道如何设置笔触颜色。 非常感谢!!!!

Solutions Collecting From Web of "我怎样才能设置Android评分栏中风的颜色? (不是星星的颜色,而是BORDER)"

把所有可绘制的颜色设置为黄色( 在你的情况下getResources().getColor(R.color.gold) )设置笔触和背景。 (为背景,二级进展和进展)

 RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar); LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_ATOP); stars.getDrawable(0).setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_ATOP); stars.getDrawable(1).setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_ATOP); 

RatingBar移除progressBackgroundTintprogressTintsecondaryProgressTint属性不需要它。

 <RatingBar android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:rating="2.5"/> 

结果是::

此搜索

希望这会有所帮助(粉红色只是背景颜色)

设置可绘制1和0之后为红色:

 RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar); LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable(); stars.getDrawable(2).setColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_ATOP); stars.getDrawable(0).setColorFilter(Color.Red, PorterDuff.Mode.SRC_ATOP); stars.getDrawable(1).setColorFilter(Color.Red, PorterDuff.Mode.SRC_ATOP); 

图像2

我想我实际上find了你需要的东西。 你将不得不按照这个答案中的解释创build一个自定义的RatingBar ,但是你将不得不使用vector drawable而不是标准的。

你可以在这个网站上下载3个drawable(full,half和empty):

https://materialdesignicons.com/

或者通过右键单击您的res文件夹: – >新build – > Android Studio上的vector素材。

这里是3个可绘制的XML,以防你找不到它们:

全明星:

 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#000" android:pathData="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" /> 

半星:

 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#000" android:pathData="M12,15.89V6.59L13.71,10.63L18.09,11L14.77,13.88L15.76,18.16M22,9.74L14.81,9.13L12,2.5L9.19,9.13L2,9.74L7.45,14.47L5.82,21.5L12,17.77L18.18,21.5L16.54,14.47L22,9.74Z" /> 

空星:

 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#000" android:pathData="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /> 

要更改它们的大小,只需更新属性的heightwidth

要更改颜色,只需更新fillColor属性并设置您的黄色。