Das Setzen von textSize in der benutzerdefinierten Ansicht führt zu großem Text

Ich rufe im Konstruktor meiner benutzerdefinierten Ansicht Folgendes auf:

private void style(Resources.Theme theme, AttributeSet attrs) {
    TypedArray a = theme.obtainStyledAttributes(
            attrs,
            R.styleable.StackedTextView,
            0, 0);

    try {
        DebugTool.assertTrue(holdr != null, "View holder has not been properly intialized.");
        String line1 = a.getString(R.styleable.StackedTextView_line1);
        setLine1(line1);
        String line2 = a.getString(R.styleable.StackedTextView_line2);
        setLine2(line2);

        line1Size = a.getDimension(R.styleable.StackedTextView_line1_textSize, 20);
        line2Size = a.getDimension(R.styleable.StackedTextView_line2_textSize, 20);
        if (line1Size > 0) {
            holdr.textLine1.setTextSize(line1Size);
        }
        if (line2Size > 0) {
            holdr.textLine2.setTextSize(line2Size);
        }

    } finally {
        a.recycle();
    }
}

Es soll Text und Textgröße für 2 Textfelder festlegen.

Ich habe in meiner Datei attr.xml zusätzlich zu den Zeichenfolgeformaten für den Textinhalt Folgendes (das funktioniert einwandfrei).

    <attr name="line1_textSize" format="dimension" />
    <attr name="line2_textSize" format="dimension" />

Wenn ich diese Ansicht verwende und die Textgröße mithilfe einer Dimension über XML einstelle,

        <com.me.app.view.component.StackedTextView
            android:id="@+id/overview_total_reviews"
            app:line1="40"
            app:line2="Rating"
            style="@style/OverviewStackedText"
            app:line1_textSize="10sp"
            app:line2_textSize="12sp"
            />

Der Text ist am Ende deutlich größer als erwartet. Ich stelle nur 10 bzw. 12sp ein und die Textgrößen liegen näher bei 30sp.

ann jemand sehen, was ich falsch mache? Muss ich mit DisplayMetrics etwas unternehmen, um sicherzustellen, dass die Dinge richtig skaliert sind?

Bearbeiten: Hinzufügen von Klarstellungen

Die Dimension wird aufgenommen. Der Text ändert sich, wenn ich die verschiedenen Textgrößen mithilfe meines benutzerdefinierten Attributs (in XML) einstelle. Ich habe auch versucht mitgetDimensionPixelSize.

Es ist, als ob die Berechnung / Bemaßung falsch ist. Eine Änderung von 1sp (oder dp) führt zu einer signifikanten Änderung.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage