1.xml布局解决。
2.代码解决。
3.将RatingBar换成ImageView,一劳永逸。
第一种方式:
能解决正规分辨率下的适配,但是Android机型真是不敢恭维,太NM恶心了。
做适配:
1.分别在drawable目录下放置对应的图片
2.写个样式
<style name="myRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_drawable</item>
<item name="android:minHeight">@dimen/rating_bar_my_height</item>
<item name="android:maxHeight">@dimen/rating_bar_my_height</item>
</style>
不同dpi目录下 dimen设置的height应该对应相应的图片px
这是我的RatingBar的drawable
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@android:id/background"
android:drawable="@drawable/star2_gray">
</item>
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/star2_gray">
</item>
<item
android:id="@android:id/progress"
android:drawable="@drawable/star2_pink">
</item>
</layer-list>
不同dpi目录下的图片
xhdpi目录下的star2_pink
xxhdpi目录下的star2_pink
不同dpi目录下的dimens
xhdpi目录下设置的RatingBar的height
xxhdpi目录下设置的RatingBar的height
第二种方式:
直接获取对应图片的高度,然后设置图片的高度。
try {
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_score_press);
scroeHeight = bmp.getHeight();
} catch (Exception e) {
e.printStackTrace();
}
在需要的地方设置LayoutParams 记得图片只需要初始化一次就可以了。
if(scroeHeight!=0){
LinearLayout.LayoutParams llp = (LayoutParams) holder.rb_score.getLayoutParams();
llp.width = -2;// 包裹内容
llp.height = scroeHeight;
holder.rb_score.setLayoutParams(llp);
}
网友评论