实现Android评级栏样式的问题

时间:2011-07-17 10:11:29

标签: android styles

我想以编程方式为评级栏制作样式。我已经阅读了这个教程 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>

0 个答案:

没有答案