android - style - ¿Por qué el texto de mi botón está forzado a TODAS LAS CAPS en Lollipop?
small button android (16)
En mi aplicación "Tide Now WA" que probé recientemente para compatibilidad con la nueva tableta Nexus 9 (Lollipop - API 21).
Escribe algún texto de botón. Esta aplicación escribe el texto correctamente con Android 2.3 y Android 4.0. Es decir, mayúsculas y minúsculas.
Cuando se ejecuta la misma aplicación en mi Nexus 9, todas las letras del texto están en mayúscula.
FWIW mi manifiesto contiene la siguiente declaración:
uses-sdk android:minSdkVersion="10" android:targetSdkVersion="14"
¿Puedo arreglar esto en mi código o es un error en el sistema operativo gracias
Agregue android: textAllCaps = "false" en la etiqueta <Button>
eso es todo.
El uso de android.support.v7.widget.AppCompatButton en el diseño XML le permitirá evitar tener que tener un diseño-21 o cambiar cualquier cosa mediante programación. Naturalmente, esto también funcionará con la biblioteca AppCompat v7.
<android.support.v7.widget.AppCompatButton
android:id="@+id/btnOpenMainDemo"
android:textAllCaps="false"
style="@style/HGButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_main_demo"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"/>
Espero que esto ayude.
El valor predeterminado de Lollipop viene con "textAllCaps true", por lo que tiene que hacerlo manualmente en false
En el IDE de Android Studio, debe hacer clic en el icono Filtro para mostrar las propiedades de los expertos. Luego verá la propiedad textAllCaps
. Compruébalo, luego desmarca.
Establecer android: textAllCaps = "false". Si está utilizando un estilo appcompat, asegúrese de que textAllCaps sea anterior al estilo. De lo contrario, el estilo lo anulará. Por ejemplo:
android:textAllCaps="false"
style="@style/Base.TextAppearance.AppCompat"
Esto es lo que hice en mis valores / temas.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="buttonStyle">@style/MyButton</item>
</style>
<style name="MyButton" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>
Esto se puede arreglar en el código de la aplicación configurando el Método de transformación del botón, por ejemplo,
mButton.setTransformationMethod(null);
Hay una forma más fácil que funciona para todos los botones, solo cambie la apariencia de los botones en su tema, intente esto:
en values-21 / styles.xml
<resources>
<style name="myBaseTheme"
parent="@android:style/Theme.Material.Light">
<item name="android:colorPrimary">@color/bg</item>
<item name="android:colorPrimaryDark">@color/bg_p</item>
<item name="android:textAppearanceButton">@style/textAppearanceButton</item>
</style>
<style name="textAppearanceButton" parent="@android:style/TextAppearance.Material.Widget.Button">
<item name="android:textAllCaps">false</item>
</style>
</resources>
PD: se recomienda seguir los principios de diseño del material, debe mostrar el texto en mayúscula en los Botones, http://www.google.com/design/spec/components/buttons.html
No sé por qué la respuesta de @ user1010160 obtuvo una calificación de 0. Le hubiera dado +1 si tuviera la reputación suficiente.
Como mi aplicación está diseñada para una API de menos de 14 y no quería agregar código a mi programa, no encontré una solución hasta que leí su respuesta. Lo que dijo fue que aunque haya hecho lo que se necesita en los estilos de la aplicación, no funcionará a menos que agregue un estilo a su actividad y allí establezca textAllCaps en falso.
No es suficiente tener un estilo para la actividad (mi actividad tenía un estilo), ya que el estilo puede ser predeterminado en la propiedad AllCaps. Tienes que establecer explícitamente, en la actividad también, esa propiedad a falso.
Ahora lo tengo tanto en la aplicación como en las partes de actividad del archivo de manifiesto.
No tengo idea de por qué está sucediendo, pero hay 3 intentos triviales para hacer:
Use
android:textAllCaps="false"
en sulayout-v21
Cambia programáticamente el método de transformación del botón.
mButton.setTransformationMethod(null);
Revise su estilo para Allcaps
Nota : public void setAllCaps (boolean allCaps) android: textAllCaps están disponibles desde la versión 14 de la API.
OK, solo encontré esto. Los botones en Lollipop salen en mayúsculas Y la fuente se restablece a "normal". Pero en mi caso (Android 5.02), ¿estaba funcionando correctamente en un diseño, pero no en otro?
Cambiar las API no funcionó.
La configuración en mayúsculas requiere min API 14 y la fuente aún se restablece en "normal".
Esto se debe a que los estilos de materiales de Android obligan a cambiar los estilos si no hay uno definido (por eso funcionó en uno de mis diseños y no en el otro porque definí un estilo).
Entonces, la solución fácil es definir un estilo en el manifiesto para cada actividad que en mi caso fue:
android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen"
(Espero que esto ayude a alguien, me hubiera ahorrado un par de horas la noche anterior)
Podría agregar android:textAllCaps="false"
al botón.
El texto de los botones puede transformarse en mayúsculas por el tema de su aplicación que se aplica a todos los botones. Verifique los archivos de temas / estilos para establecer el atributo android:textAllCaps
.
Si ha llegado aquí porque el texto de su botón de Facebook aparece en mayúsculas, simplemente agregue este android:textAllCaps="false"
en su archivo xml. Funcionó para mí.
Si usa appcompat-v7
, puede AppCompatButton
subclase de AppCompatButton
y setSupportAllCaps(false)
, luego usar esta clase para todos sus botones.
/**
* Light extension of {@link AppCompatButton} that overrides ALL CAPS transformation
*/
public class Button extends AppCompatButton {
public Button(Context context, AttributeSet attrs) {
super(context, attrs);
setSupportAllCaps(false);
}
public Button(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setSupportAllCaps(false);
}
}
Ver AppCompatButton#setSupportAllCaps(boolean) documentos de Android.
añade esta línea con estilo
<item name="android:textAllCaps">false</item>
este está funcionando ... solo en su código en su código inferior agregue este:
android:textAllCaps="false"
Debería desactivar la letra mayúscula que U intenta escribir con letra pequeña.