Intereting Posts
Как создать точку доступа программно «Недостаточно места для хранения», даже в памяти устройства много свободного места Android: нужно создать объект Shared Preferences в C ++ NDK и сохранить некоторое значение Boolean Приложение Кордовы, которое не использует push-уведомления: «Отсутствие права на уведомление push-уведомления» Получить Lat Lang из place_id, возвращенного автозаполнением api Нарисуйте изображение в полноэкранном режиме Android Как установить стиль шрифта полужирным, курсивом и подчеркнутым в Android TextView? Правильно сориентируйте необработанные данные камеры ViewPager в DialogFragment – IllegalStateException: Фрагмент не имеет вида Как удалить значок настроек в правом верхнем углу панели действий? Активность мастера полноэкранного действия. Как отключить отображение панели действий при взаимодействии с устройством? Как отменить тост Amazon Appstore DRM – Как реализовать? Вам нужно отображать лицензионное соглашение при использовании Flurry / Google Analytics? Экран предпочтения Пользовательский макет работает только со вторым щелчком

Android: textAllCaps = "false" не работает для дизайна TabLayout

Я установил android:textAllCaps="false" в моем android:textAllCaps="false" android.support.design.widget.TabLayout подумал, что он показывает только заголовок Tab во всех шапках.

Как я могу удалить все кепки?

Solutions Collecting From Web of "Android: textAllCaps = "false" не работает для дизайна TabLayout"

ОБНОВЛЕНИЕ ДЛЯ ДИЗАЙН-БИБЛИОТЕКИ 23.2.0+

Исходный ответ не работает с библиотекой дизайна 23.2.0 или новее. Спасибо за @ fahmad6, отметил в комментарии, если кто-то пропустил этот комментарий, я поставлю его здесь. Вам нужно установить для textAllCaps и android:textAllCaps значение false чтобы отключить все настройки заглавной буквы.

 <style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> <item name="android:textAllCaps">false</item> </style> 

ОРИГИНАЛЬНЫЙ ОТВЕТ

По умолчанию вкладки создаются TabLayout, поэтому свойство textAllCaps является истинным, вам нужно определить стиль, который делает этот флаг ложным.

 <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 правильный, однако вы можете создать только стиль табуляции

 <style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> <item name="textAllCaps">false</item> </style> 

И используйте его, используя

 <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" /> 

В версиях priror to 14 вам нужно установить (как прокомментировал Пареш Майяни):

 <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> 

Но, если версия для Android равна или больше 14, вам необходимо установить:

 <item name="android:textAllCaps">false</item> 

Итак, если вам нужно быть совместимым с версиями до и после 14, вам также необходимо создать значения папки-v14 и файл styles.xml в этой папке с содержимым:

 <?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> 

Вот простое решение …. Наслаждайтесь

  for (int tabIndex = 0; tabIndex <tabLayout.getTabCount() ; tabIndex++) { TextView tabTextView = (TextView)(((LinearLayout)((LinearLayout)tabLayout.getChildAt(0)).getChildAt(tabIndex)).getChildAt(1)); tabTextView.setAllCaps(false); } 

Вы также можете сделать это в своем Java-коде. Если вы используете SlidingTabLayout, посмотрите на этот образец:

 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; } 

Обратите внимание, что textView.setAllCaps () имеет true как периметр:

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

Когда я изменил это на (false), он решил проблему для меня:

 textView.setAllCaps(false); 

Также файл строковых ресурсов, который я использую для вкладок, выглядит так:

 <string name="tab_title">Title with capital and smaller case</string> 

Однако, если у него были все кепки, такие как> TITLE WITH ALL CAPS <, вы все равно, конечно, получите все шапки в своих вкладках.

Я не сделал никаких других изменений.

Стоит отметить, что вы также можете установить textView.setAllCaps (false), но это не имело никакого значения в моем случае. Я просто прокомментировал textView.setAllCaps (true).