Convertir píxeles en sp

Necesito el TextSize actual de TextView en unidades sp .

Pero getTextSize() devuelve el tamaño en pixels . Así que hay una manera de convert pixels to sp ?

Vea la clase DisplayMetrics , tiene campos para densityDpi y scaledDensity .

Ejemplo de uso:

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

Utilizar esta

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

Si desea probar si este método funciona correctamente, use este fragmento

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

El tamaño de fuente de TextView debe ser el mismo.

Extraño ver campo público que se ajusta en tiempo de ejecución, pero funciona. Dpi estándar es de 160, así que cualquier dispositivo Dpi es, digamos 240, tanto la densidad y scaledDensity mostrará 240/160 = 1.5 Así es como convertir entre píxeles y sp: px = 1.5 * sp

  • Ocultar TextView después de algún tiempo en Android
  • Textview.getLineCount siempre 0 en android
  • Pellizcar Zoom en el texto de vista Android
  • Android TextView id con una variable?
  • Android sdk 18 La gravedad de TextView no funciona verticalmente
  • TextView: lineSpacingMultiplier y lineSpacingExtra también se aplica a la última línea
  • Recortar TextView en el centro, reservando caracteres finales
  • ¿Cómo mover una Textview dinámicamente en la pantalla? (Framelayout)
  • Actualizar dinámicamente TextView en Android
  • Necesita hacer que TextView se desplace verticalmente automáticamente
  • Cómo cambiar el texto de un TextView en el encabezado del cajón de navegación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.