计算分割线的高度

分割线的高度一般是1px,但是测量出来的值可能是0.33dp。所以,不能直接使用0.33dp,因为装换成int之后会导致分割线的高度为0.

使用X2C框架自动升层的代码中,计算0.33dp的代码如下:

(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,0.33f,getResources().getDisplayMetrics()))

在Pixel 3A上运行结果是: 0.9075

这是个float类型,不能直接复制给View的height,需要转换成int类型。转换如下:

(int)(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,0.33f,getResources().getDisplayMetrics()))

运行结果是:0

所以这导致分割线的高度为0。

正确的方式应该是:

Math.max(1, (int)(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 0.33f, getResources().getDisplayMetrics())))

或者

(int)(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 0.33f, getResources().getDisplayMetrics())+0.5f)

但是建议使用第一种方式,因为第二种如果前半部分是一个小于0.5f的数字,结果仍然是0.

 
发布了348 篇原创文章 · 获赞 8 · 访问量 74万+

猜你喜欢

转载自blog.csdn.net/logan676/article/details/104038917
今日推荐