答えは、この特定の問題を全体的に見ることにあります。
フォント サイズに "sp" を使用する動機は、ユーザーがデバイスのフォント サイズを変更した場合に、開発者がレイアウトを制御できるようにすることにあります。
例:
2 つの極端なケースを見てみましょう。
1) ユーザーがフォントサイズ「小」を選択
これは私のレイアウトがどのように見えるかです:
http://postimg.org/image/kiyqeo2bh/
レイアウトxmlは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="0"
android:text="Material-Design ist die Scheiße"
android:textSize="18sp"
android:background="#ffff0000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="0"
android:text="Material-Design ist die Scheiße"
android:textSize="25sp"
android:background="#ffff0000" />
2) ユーザーがフォントサイズ「巨大」を選択した場合:
これは私のレイアウトがどのように見えるかです:
http://postimg.org/image/d7rax9wob/
私のレイアウト xml は、上記のケース 1) と同じです)。
したがって、ここで何が起こったかを見ることができるように、上部の TextView は、フォント サイズの範囲全体 (小さいものから大きいものまで) をラップしないため、sp で一種の完璧なフォント サイズを持っています。しかし、下部の TextView は、ケース 2) でレイアウト/デザインを完全に台無しにします。
そのため、開発者はデザインに適した sp のサイズを反復して決定することができ、Android がそれを描画します。