No se puede crear superíndice para texto de botón de Android con Html.fromHtml ()

He leído a través de estas dos preguntas , que parecen tener el mismo problema que estoy luchando con, es decir, tengo texto para mis botones que me gustaría mostrar como un superíndice. En mi clase de fragmento en el método onCreateView he añadido

 if (rootView.findViewById(R.id.squared) != null) { ((TextView) rootView.findViewById(R.id.squared)).setText(Html.fromHtml("X <sup><small> 2 </small></sup>")); rootView.findViewById(R.id.squared).setOnClickListener(this); } if (rootView.findViewById(R.id.cubed) != null) { ((TextView) rootView.findViewById(R.id.cubed)).setText(Html.fromHtml("X <sup><small> 3 </small></sup>")); rootView.findViewById(R.id.cubed).setOnClickListener(this); 

En mi fragment_main los botones están codificados como

 <Button android:layout_height="match_parent" android:layout_width="0dp" android:fontFamily="helvetica" android:id="@+id/squared" android:layout_weight="0.25" style="?android:attr/borderlessButtonStyle" android:textSize="15sp" /> <Button android:layout_height="match_parent" android:layout_width="0dp" android:fontFamily="helvetica" android:id="@+id/cubed" android:layout_weight="0.25" style="?android:attr/borderlessButtonStyle" android:textSize="15sp" /> 

Sin embargo, cuando ejecuto mi aplicación el diseño no contiene ningún texto superíndice.

introduzca la descripción de la imagen aquí

Incluso cuando cambio el tamaño de texto de 15sp a 10sp , el texto sólo se hace más pequeño, pero no superpuesto. ¿Qué no estoy haciendo correctamente?

Me gustaría comentar si pudiera, pero en este momento no puedo. Simplemente he publicado algo similar a esto, un problema que estoy teniendo también. Tuve mi problema resuelto a medio camino. El método Html.fromHtml funciona para mí sólo en un textview, pero no en mis butons. Sólo quería decir esto en caso de que le ayuda a usted o cualquier otra persona averiguar cómo emplear este método en los botones. Me gustaría mucho la respuesta.

Básicamente: textview.setText(Html.fromHtml("x<sup>2</sup")); muestra correctamente

PERO button.setText(Html.fromHtml("x<sup>2</sup")); muestra x2 (sin superíndice).

EDIT: AlanV me ayudó. Aquí hay un enlace a la solución que proporcionó a alguien más. https://stackoverflow.com/a/29056795/4535064

Todo lo que necesitas hacer es añadir esto a tu botón:

 <button android:textAllCaps="false";/> 

La nueva versión 5.0 (creo) obliga a los botones a producir todas las tapas. Esto es algo que noté cuando produjo la misma cadena en un textview y un botón, y el botón era todos los mayúsculos mientras que el textview no era. Debido a esto, no ve el formato HTML como y. Establecer la característica textAllCaps como "false" permite utilizar el HTML.

Una vez más, dando crédito donde es debido, AlanV es el hombre! Todos los derechos reservados

Este es un problema conocido, como se muestra aquí .

Creo que lo mejor que puedes hacer es configurar android: textAllCaps = "false" , y luego configurar el texto para ser capitalizado por ti mismo.

  • Busquen una letra abreviatura de week day of a date en java
  • Cómo dar formato al tiempo no fecha en Android o Java?
  • Android: formato de fecha en una cadena
  • Formato de fecha y hora
  • Símbolo de porcentaje en strings.xml
  • ¿Qué hay de malo en esta cadena de formato?
  • Formato de fecha y hora según la configuración regional
  • Cómo formatear una fecha de calendario
  • ¿Cuál es la diferencia entre android.text.format.DateFormat y java.text.DateFormat
  • Detenga Android Studio de métodos de empaquetado y constructores
  • Formatear el número de teléfono de EditText como tipos de usuario
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.