Android 评级条的星星之间的间距?

Android 评级条的星星之间的间距?,android,Android,我可以在星星之间设定一个间隔吗?这是我的评级栏: ratingBar = (RatingBar) inflater.inflate(R.layout.ratingbar, null); ratingBar.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 布局: <?xml version="1.0" encoding="utf-8"?> <Rati

我可以在星星之间设定一个间隔吗?这是我的评级栏:

ratingBar = (RatingBar) inflater.inflate(R.layout.ratingbar, null);
ratingBar.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
布局:

<?xml version="1.0" encoding="utf-8"?>
<RatingBar xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/myStyle" android:layout_alignParentRight="true"
    android:layout_height="19dp" android:layout_width="wrap_content"
    android:numStars="5">
</RatingBar>

风格:

 <style name="myStyle" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/android_r2_ratingstar_yellow</item>
    <item name="android:indeterminateDrawable">@drawable/android_r2_ratingstar_grey</item>
 </style>

@可拖动/安卓系统\u r2\u分级星形\u黄色
@可拉深/安卓\u r2\u分级星形\u灰色

谢谢,干杯

您必须将填充添加到png本身。而有一种被称为插画的东西(http://developer.android.com/guide/topics/resources/drawable-resource.html#Inset)您可以将您的drawable封装到其中,用于“tileify”的代码(如android源代码中所述)不处理drawable为嵌入式drawable的情况,因此不会平铺图像

下面是tilefy方法(在ProgressBar.java中,它是RatingBar.java的祖先:)

private可绘制tileify(可绘制,布尔剪辑){
if(图层的可绘制实例可绘制){
LayerDrawable背景=(LayerDrawable)可绘制;
final int N=background.getNumberOfLayers();
可提取[]可提取=新可提取[N];
对于(int i=0;i
没有简单的方法可以修改图像之间的填充,更好地节省时间,只需使用任何可用的图像编辑器添加一些空间。

您可以尝试通过在右侧添加一些透明边框来为图片本身添加填充。您的帖子有点混乱-是否可以不修改png?tileify方法解决了吗?如何添加填充物?如果没有,为什么要发布它?
private Drawable tileify(Drawable drawable, boolean clip) {

    if (drawable instanceof LayerDrawable) {
        LayerDrawable background = (LayerDrawable) drawable;
        final int N = background.getNumberOfLayers();
        Drawable[] outDrawables = new Drawable[N];

        for (int i = 0; i < N; i++) {
            int id = background.getId(i);
            outDrawables[i] = tileify(background.getDrawable(i),
                    (id == R.id.progress || id == R.id.secondaryProgress));
        }

        LayerDrawable newBg = new LayerDrawable(outDrawables);

        for (int i = 0; i < N; i++) {
            newBg.setId(i, background.getId(i));
        }

        return newBg;

    } else if (drawable instanceof StateListDrawable) {
        StateListDrawable in = (StateListDrawable) drawable;
        StateListDrawable out = new StateListDrawable();
        int numStates = in.getStateCount();
        for (int i = 0; i < numStates; i++) {
            out.addState(in.getStateSet(i), tileify(in.getStateDrawable(i), clip));
        }
        return out;

    } else if (drawable instanceof BitmapDrawable) {
        final Bitmap tileBitmap = ((BitmapDrawable) drawable).getBitmap();
        if (mSampleTile == null) {
            mSampleTile = tileBitmap;
        }

        final ShapeDrawable shapeDrawable = new ShapeDrawable(getDrawableShape());

        final BitmapShader bitmapShader = new BitmapShader(tileBitmap,
                Shader.TileMode.REPEAT, Shader.TileMode.CLAMP);
        shapeDrawable.getPaint().setShader(bitmapShader);

        return (clip) ? new ClipDrawable(shapeDrawable, Gravity.LEFT,
                ClipDrawable.HORIZONTAL) : shapeDrawable;
    }

    return drawable;
}