sp中的返回文字大小不正确

时间:2019-05-03 15:04:25

标签: android

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

0 个答案:

没有答案