Android: textAllCaps = "false" no funciona para el diseño de TabLayout
He fijado android:textAllCaps="false"
en mi android.support.design.widget.TabLayout
pensó que está mostrando el título de la etiqueta en todos los casquillos solamente.
¿Cómo puedo quitar todos los tapones?
- Color del texto del botón AlertDialog con la biblioteca de soporte v24.2.1
- BottomSheet con ViewPager y fragmentos?
- EditText getHint () devuelve null al usar la biblioteca de soporte de diseño
- Comportamiento personalizado con el diseño del coordinador
- TabLayout fijo y superposición de contenido AppBar
- ¿Cómo puedo cambiar el tamaño de texto del elemento NavigationView?
- Cambiar el color de un elemento de menú marcado en un cajón de navegación
- Tablayout de la biblioteca de soporte de diseño de Android mediante el diseño de pestañas personalizadas, pero el diseño que envuelve las pestañas
- Forma de indicador de pestaña personalizada en Diseño de soporte de Widget TabLayout
- Cómo cambiar la posición de etiqueta flotante de TextInputLayout en android
- Bug con FloatingActionButton anclado en la biblioteca de soporte 24.2.1
- Android ¿Por qué no se muestra el botón de salida de Facebook SDK?
- ¿Cómo obtener el nuevo NavigationView para jugar agradable con la barra de estado scrim?
ACTUALIZACIÓN PARA LA BIBLIOTECA DE DISEÑO 23.2.0+
La respuesta original no funciona con la biblioteca de diseño 23.2.0 o posterior. Gracias por @ fahmad6 señaló en el comentario, en caso de que alguien se perdió ese comentario, lo voy a poner aquí. Es necesario configurar tanto textAllCaps
como android:textAllCaps
como false
para desactivar todas las android:textAllCaps
de mayúsculas.
<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> <item name="android:textAllCaps">false</item> </style>
RESPUESTA ORIGINAL
De forma predeterminada, las fichas son creadas por TabLayout establece la propiedad textAllCaps como verdadera, hay que definir un estilo que haga que este indicador sea falso.
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabTextAppearance">@style/MyCustomTextAppearance</item> </style> <style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> </style>
@Paresh Mayani respuesta es correcta sin embargo, usted puede crear sólo el estilo de la pestaña
<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> </style>
Y usarlo usando
<android.support.design.widget.TabLayout app:tabTextAppearance="@style/MyCustomTextAppearance" .../>
https://stackoverflow.com/a/34678235/1025379
<android.support.design.widget.TabLayout app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" />
En las versiones priror a 14, es necesario configurar (como comentado por Paresh Mayani):
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabTextAppearance">@style/MyCustomTextAppearance</item> </style> <style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> </style>
Pero, en el caso de la versión de Android es igual o mayor que 14, es necesario establecer:
<item name="android:textAllCaps">false</item>
Por lo tanto, si necesita ser compatible con versiones anteriores y posteriores a 14, también debe crear una carpeta valores-v14 y un archivo styles.xml en esa carpeta con el contenido:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="android:textAllCaps">false</item> </style> </resources>
Aquí está la solución simple …. Disfrute
for (int tabIndex = 0; tabIndex <tabLayout.getTabCount() ; tabIndex++) { TextView tabTextView = (TextView)(((LinearLayout)((LinearLayout)tabLayout.getChildAt(0)).getChildAt(tabIndex)).getChildAt(1)); tabTextView.setAllCaps(false); }
También puede hacer esto en su código Java. Si está utilizando un aspecto de SlidingTabLayout en este ejemplo:
protected TextView createDefaultTabView(Context context){ TextView textView = new TextView(context); textView.setGravity(Gravity.CENTER); textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, TAB_VIEW_TEXT_SIZE_SP);//see line 38 above change the value their in TAB_VIEW_TEXT_SIZE_SP. textView.setTypeface(Typeface.DEFAULT);//From DEFAULT_BOLD textView.setTextColor(Color.parseColor("#536DFE"));//Text color of the words in the tabs. Indigo A200 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ // If we're running on Honeycomb or newer, then we can use the Theme's // selectableItemBackground to ensure that the View has a pressed state TypedValue outValue = new TypedValue(); getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true); textView.setBackgroundResource(outValue.resourceId); } if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){ // If we're running on ICS or newer, enable all-caps to match the Action Bar tab style textView.setAllCaps(true); } int padding = (int)(TAB_VIEW_PADDING_DIPS * getResources().getDisplayMetrics().density); textView.setPadding(padding, padding, padding, padding); return textView; }
Observe que textView.setAllCaps () tiene true como el perímetro:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){ // If we're running on ICS or newer, enable all-caps to match the Action Bar tab style textView.setAllCaps(true); }
Cuando cambié esto a (falso) resolvió el problema para mí:
textView.setAllCaps(false);
También mi archivo de recursos de cadena que utilizo para las pestañas se ve así:
<string name="tab_title">Title with capital and smaller case</string>
Sin embargo, si tenía todas las tapas como> TITLE WITH ALL CAPS <usted todavía obtendría por supuesto todas las tapas en sus pestañas.
No hice otros cambios.
Es digno de mención que se puede establecer textView.setAllCaps (false) también, pero esto no hizo ninguna diferencia en mi caso. Acabo de comentar textView.setAllCaps (true).