62 votes

Convertir des pixels en sp

J'ai besoin des unités TextSize de TextView en sp .

Mais getTextSize() renvoie la taille en pixels . Alors, y a-t-il moyen de convert pixels to sp ???

Merci Nital

145voto

sealskej Points 2356

Utilisez ceci

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

Si vous voulez vérifier si cette méthode fonctionne correctement, utilisez cet extrait.

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()));
 

La taille de la police de TextView doit être la même.

47voto

Gabriel Negut Points 6081

Voir la classe DisplayMetrics , elle a des méthodes pour densityDpi() et scaledDensity() .

5voto

Vlad Points 1836

bizarre de voir un champ public qui est ajusté au moment de l'exécution mais qui fonctionne. La valeur standard de Dpi est de 160. Quel que soit votre appareil, par exemple, 240, les densités et les valeurs scaledDensity afficheront 240/160 = 1.5 Voici comment vous convertissez entre pixels et sp: px = 1.5 * sp

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X