Konvertieren Sie Pixel in sp

Lesezeit: 2 Minuten

Konvertieren Sie Pixel in sp
Nital

Ich brauche den Strom TextSize des TextView in sp Einheiten.

Aber getTextSize() gibt die Größe in zurück pixels. Gibt es also einen Weg convert pixels to sp?

  • Siehe auch diese Antwort für DP -> PX, PX -> DP, SP to PX, und PX to SP Konvertierungen.

    – Suragch

    8. Februar 17 um 8:37 Uhr

1642791184 604 Konvertieren Sie Pixel in sp
Sealskej

Benutze das

public static float pixelsToSp(Context context, float px) {
    float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
    return px/scaledDensity;
}

Wenn Sie testen möchten, ob diese Methode richtig funktioniert, verwenden Sie dieses Snippet

XML

<TextView
        android:id="@+id/txtHelloWorld"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

<TextView
        android:id="@+id/txtHelloWorld2"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

Java

View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView helloWorldTextView = (TextView)    rootView.findViewById(R.id.txtHelloWorld);
TextView helloWorldTextView2 = (TextView) rootView.findViewById(R.id.txtHelloWorld2);
helloWorldTextView2.setTextSize(pixelsToSp(getActivity(), helloWorldTextView.getTextSize()));

Die Schriftgröße beider TextViews sollte gleich sein.

1642791184 511 Konvertieren Sie Pixel in sp
Gabriel Negut

Siehe die AnzeigeMetriken Klasse, es hat Felder für densityDpi und scaledDensity.

Beispielnutzung:

float sp = px / getResources().getDisplayMetrics().scaledDensity;

  • Nur zur Verdeutlichung: die DisplayMetrics Klasse hat Felder densityDpi und scaledDensity, nicht Methoden. Und zum Skalieren würde man das nutzen wollen density Feld statt densityDpi.

    –Ted Hopp

    12. April 16 um 16:58 Uhr

  • Bitte beantworten Sie die gestellte Frage. Den Namen einer Klasse zu sagen, die für eine Antwort verwendet werden kann, ist selbst keine Antwort.

    – Megakoresch

    16. Dezember 16 um 12:50 Uhr


  • Dieser hier hat mir geholfen 👍

    – mustafiz012

    18. März 19 um 08:28 Uhr

Es ist seltsam, ein öffentliches Feld zu sehen, das zur Laufzeit angepasst wird, aber es funktioniert. Standard Dpi ist 160, also was auch immer Ihr Gerät Dpi ist, sagen wir 240, sowohl density als auch scaledDensity zeigen 240/160=1.5. So konvertieren Sie zwischen Pixel und sp: px=1.5*sp

.

579570cookie-checkKonvertieren Sie Pixel in sp

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy