我已將ratingBar顏色設置爲與Android的默認藍色和灰色不同的顏色 - 如果選中它們,我使用黑色背景和粉色製作了我的星星。Android RatingBar:無法填充部分ratingBar如果我定製它的顏色
這是我爲我的mainactivity代碼:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingbar);
LayerDrawable layerDrawable2 = (LayerDrawable) ratingBar.getProgressDrawable();
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable2.getDrawable(0)),
ContextCompat.getColor(getApplicationContext(), android.R.color.background_dark));
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable2.getDrawable(1)),
ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)); // Partial star
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable2.getDrawable(2)),
ContextCompat.getColor(getApplicationContext(), R.color.colorAccent));
ratingBar.setIsIndicator(false);
ratingBar.setRating(3.6f);
ratingBar.setStepSize(0.1f);
ratingBar.invalidate();
ratingBar.setIsIndicator(true);
}
}
你可以看到,如果我把在等級爲3.6,它選擇最多4
但是,如果我將我自己的自定義顏色註釋掉了,ratingBar自行設置正確,只顯示第四顆星的一部分,因爲傳遞給它的值爲3.6:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingbar);
/* LayerDrawable layerDrawable2 = (LayerDrawable) ratingBar.getProgressDrawable();
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable2.getDrawable(0)),
ContextCompat.getColor(getApplicationContext(), android.R.color.background_dark));
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable2.getDrawable(1)),
ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)); // Partial star
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable2.getDrawable(2)),
ContextCompat.getColor(getApplicationContext(), R.color.colorAccent));*/
ratingBar.setIsIndicator(false);
ratingBar.setRating(3.6f);
ratingBar.setStepSize(0.1f);
ratingBar.invalidate();
ratingBar.setIsIndicator(true);
}
}
爲什麼,如果我創建自己的自定義顏色的的RatingBar未正確填入自己?
我創建了一個小的回購,你可以下載它,並在這裏進行測試:https://github.com/Winghin2517/RatingBarTest2
編輯:
FlyingPumba圖書館顯示了什麼,我想實現一些希望,但是我需要一個風格,其中星星背景在屏幕上出現時爲白色,當用戶按下星號時,它將以純色填充。就我而言,我希望它充滿綠色。
以下是我所能達到的,但還沒有完成。我改變了滾動視圖的背景,其中的星星坐着粉紅色,以便你可以看到,而不是星星的白色背景,來自scrollview背景的粉紅色閃耀。對於我的使用案例,我希望白色星星坐在imageview前面,我不希望圖像視圖中的圖像通過星星閃耀。
另外我並不需要白色的中風,因爲我想保持星星的造型簡單。
<com.iarcuschin.simpleratingbar.SimpleRatingBar
android:id="@+id/ratingBar3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:srb_rating="3.6"
app:srb_fillColor="@color/material_greenA700"
app:srb_borderColor="@color/material_white"
app:srb_starBorderWidth="0"
app:srb_pressedFillColor="@color/material_greenA700"
app:srb_starSize="30dp"
/>
我在庫中添加了一些功能,可以讓你完成你想要的功能(查看我添加到答案中的示例佈局)。 – FlyingPumba