Ich möchte den int-Wert von textApperanceLarge im Code abrufen. Ich glaube, dass der folgende Code in die richtige Richtung geht, kann aber nicht herausfinden, wie der int-Wert aus dem TypedValue extrahiert werden kann.
TypedValue typedValue = new TypedValue();
((Activity)context).getTheme().resolveAttribute(android.R.attr.textAppearanceLarge, typedValue, true);
Antworten:
Ihr Code erhält nur die Ressourcen-ID des Stils, auf den das Attribut textAppearanceLarge verweist, nämlich TextAppearance.Large, wie Reno hervorhebt .
Fügen Sie einfach den folgenden Code hinzu, um den textSize- Attributwert aus dem Stil abzurufen :
Jetzt ist textSize die Textgröße in Pixel des Stils, auf den textApperanceLarge zeigt, oder -1, wenn es nicht festgelegt wurde. Dies setzt voraus, dass typedValue.type zunächst vom Typ TYPE_REFERENCE war. Überprüfen Sie dies daher zuerst.
Die Nummer 16973890 ergibt sich aus der Tatsache, dass es sich um die Ressourcen-ID von TextAppearance.Large handelt
quelle
Verwenden von
Für die Zeichenfolge:
Für andere Daten:
In Ihrem Fall ist das, was es zurückgibt, von der
TYPE_REFERENCE
.Ich weiß, dass es auf TextAppearance.Large verweisen sollte
Welches ist :
Dank geht an Martin für die Lösung dieses Problems:
quelle
Oder in Kotlin:
quelle
Es scheint eine Inquisition auf die Antwort des @ user3121370 zu sein. Sie brannten nieder. :Ö
Wenn Sie nur eine Dimension wie eine Auffüllung benötigen, minHeight (mein Fall war: android.R.attr.listPreferredItemPaddingStart). Du kannst tun:
Genau wie die Frage und dann:
Genau wie die entfernte Antwort. Auf diese Weise können Sie die Pixelgröße des Geräts überspringen, da die Standardgerätemetrik verwendet wird. Die Rückkehr wird float sein, und Sie sollten auf int umwandeln.
Achten Sie auf den Typ, den Sie abrufen möchten, z. B. resourceId.
quelle
Das ist mein Code.
quelle