使用 getTextSize() 测试按钮上文本的大小

Test the size of a text on a button with getTextSize()

我需要检查按钮上的文字大小是否为 37sp。 我找到了一种获取大小的方法:.getTextSize(),但我收到的大小是:126.0,而不是 48sp。 代码关闭按钮:

<Button
    android:id="@+id/buttoneql"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="="
    android:textColor="@android:color/black"
    android:textSize="48sp" />

测试:

buttoneql = (Button) currentActivity.findViewById(R.id.buttoneql);
assertEquals( 48.0f, buttoneql.getTextSize() );

我应该如何获得文字大小的真实值?

getTextSize() return px 浮动

这是将 PX 格式转换为 SP 格式的代码。

view.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
     float oldSize=buttoneql.getTextSize();

浮动文本大小

    Log.d("size in float",""+oldSize);
    float dp= getResources().getDisplayMetrics().scaledDensity;

尺度密度的浮点值

    float newSize=oldSize/dp;

sp 中的文本大小 = 新大小

    Log.d("newSize in sp-->",""+newSize);

比较文本大小和新大小的浮点值

    if(48.0==newSize){
        Log.d("equal size-->","true");
    }
    else{
        Log.d("equal size-->","false");
    }

我通过将我需要的值 (128.0) 乘以 2.625 并将其正确四舍五入使其成为整数来解决问题。

int size = (int) Math.round (48.0 * 2.625);

之后,与接收值比较:

assertEquals(size, (int) buttoneql.getTextSize());