android評価星は歪みを保たない
1375 ワード
package com.fanwe.library.customview;
import java.lang.reflect.Field;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.widget.RatingBar;
public class SDRatingBar extends RatingBar
{
public SDRatingBar(Context context)
{
super(context);
}
public SDRatingBar(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public SDRatingBar(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
try
{
Class> clazz = Class.forName("android.widget.ProgressBar");
Field field = clazz.getDeclaredField("mSampleTile");
field.setAccessible(true);
Object bitmapObject = field.get(this);
Bitmap bitmap = (Bitmap) bitmapObject;
int height = bitmap.getHeight();
if (height > 0)
{
setMeasuredDimension(getMeasuredWidth(), resolveSizeAndState(height, heightMeasureSpec, 0));
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}