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
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
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.
Voir la classe DisplayMetrics , elle a des méthodes pour densityDpi()
et scaledDensity()
.
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 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.