彻底解决RatingBar图片拉伸

手机制造商:Xiaomi
手机型号:MI NOTE LTE
系统版本:4.4.4
imei:867993025592278
屏幕像素:1080*1920
密度 density:2
密度 densityDpi:440
字体大小:2.75
请问这个手机适配时走的是哪个drawable和values目录?
假如一个图片的高度是24px,在这个手机上又显示多高?

还有这个手机:
手机制造商:motorola
手机型号:Moto X Pro
系统版本:5.0.2
屏幕像素:1440*2392
密度 density:3
密度 densityDpi:560

手机制造商:HUAWEI
手机型号:HUAWEI Y511-T00
系统版本:4.2.2
屏幕像素:480*854
密度 density:1
密度 densityDpi:240

1,xml布局解决。
2,代码解决。(个人推荐第二种)
3,将RatingBar换成ImageView,一劳永逸

第一种方式:能解决正规分辨率下的适配,但是android机型真是不敢恭维,太NM恶心了。
1,分别在drawable目录下放置对应的图片。
2,写个样式

  <style name="move_home_rb_score" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/movie_home_rb_score</item>
        // 不同values目录下score的高度直接写成图片的高度(px)
        <item name="android:minHeight">@dimen/score</item>
        <item name="android:maxHeight">@dimen/score</item>
    </style>

第二种:
直接获取对应图片的高度,然后设置图片的高度。

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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值