Android Studio 3.3, Android 6.0 在Espresso的测试中,我需要以 sp 值获取textView的文本大小。
此处布局
<TextView android:id="@+id/lastIterationDateLabelTextView"
style="@style/labelTextViewStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/last_iteration_time"/>
<style name="labelTextViewStyle" parent="textViewOneLine">
<item name="android:textColor">@color/label_text_color</item>
<item name="android:textSize">@dimen/label_text_size</item>
</style>
<dimen name="label_text_size">14sp</dimen>
这是我如何在sp中获得文本大小:
public static float getTextSizeSp(Context context, TextView textView) {
float px = textView.getTextSize();
float sp = px / context.getResources().getDisplayMetrics().scaledDensity;
return sp;
}
并在Espresso的测试中使用
fun withFontSizeValue(expectedValueSp: Float): Matcher<View> {
return object : BoundedMatcher<View, View>(View::class.java) {
public override fun matchesSafely(view: View): Boolean {
if (view !is TextView) {
return false
}
val actualSizeSp = AndroidUtil.getTextSizeSp(context, view)
Assert.assertEquals(expectedValueSp, actualSizeSp, 0.2f)
return true
}
override fun describeTo(description: Description) {
description.appendText("with fontSize: ")
description.appendValue(expectedValueSp)
}
}
}
但是
val actualSizeSp = AndroidUtil.getTextSizeSp()
返回 14.871 。
为什么不返回正确的值 14.00 ?