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
?
- ¿Cómo puedo crear una vista de texto que cambie automáticamente su tamaño de fuente para que se ajuste al espacio?
- Borde de desvanecimiento para TextView verticalmente desplazable
- Spannable Vs Tipo Vs Html
- Cómo aumentar el espacio entre párrafos en una vista de texto
- ¿Puedo saber cuántos caracteres pueden caber en TextView de X anchura dp?
- Cómo cambiar el estilo de un TextView en tiempo de ejecución
- Enfocar el siguiente texto automáticamente
- Cómo cambiar el tamaño del texto en lugares autocompletefragment en android?
- Cómo ajustar la altura de línea en TextView con varios tamaños de tipo?
- Actualizar Android TextView
- Última palabra mostrada en una vista de texto
- Excepción de Android TextView y puntero nulo
- Campo o etiqueta oculto en TextView?
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
- Servicio androide startService () y bindService ()
- ¿Qué está haciendo Eclipse cuando dice que está actualizando índices?