我想以编程方式为评级栏制作样式。我已经阅读了这个教程 Pretty Rating Bar
我可以做layerList和selector,我可以通过编程方式链接它们但是我不能以编程方式链接我使用style属性创建的layerList,所以我可以用自己的样式在rating栏构造函数中设置style属性
RatingBar rb=new RatingBar(getBaseContext(), null, defStyle);
。
制作自定义评级栏我需要执行以下操作: -
1 - 使2 xmls为full_empty状态,另一个为full empty它们都包含选择器 例如,我为fullFilled状态做了这个:
StateListDrawable state_fullFilled = new StateListDrawable();
state_fullFilled.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(R.drawable.star_rated));
state_fullFilled.addState(new int[] {android.R.attr.state_focused},
getResources().getDrawable(R.drawable.star_rated));
state_fullFilled.addState(new int[] {android.R.attr.state_selected },
getResources().getDrawable(R.drawable.star_rated));
这对于fullEmpty: -
StateListDrawable state_fullEmpty = new StateListDrawable();
state_fullEmpty.addState(new int[] {android.R.attr.state_pressed},
getResources().getDrawable(R.drawable.rate));
state_fullEmpty.addState(new int[] {android.R.attr.state_focused},
getResources().getDrawable(R.drawable.rate));
state_fullEmpty.addState(new int[] { android.R.attr.state_selected},
getResources().getDrawable(R.drawable.rate));
2 - 然后我应该制作我做过的那些drawables的layerList: -
Drawable[] d=new LayerDrawable[2];
d[0]=state_fullEmpty;
d[1]=state_fullFilled;
LayerDrawable layer=new LayerDrawable(d);
3 - 我应该以编程方式完成这一步但是我不能: -
<style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/food_ratingbar_full</item>