android: textAllCaps = «false» не работает для com.google.android.material.tabs.TabLayout

Я установил android: textAllCaps = "false" в моем com.google.android.material.tabs.TabItem думал, что он показывает заголовок вкладки только заглавными буквами.

Как убрать все заглавные буквы?

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <com.google.android.material.tabs.TabItem
        android:id="@+id/TabWeekly"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="@string/Weekly"
        android:textAllCaps="false"
        android:theme="@style/CustomTextAppearanceTab" />

    <com.google.android.material.tabs.TabItem
        android:id="@+id/TabMonthly"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="@string/Monthly"
        android:textAllCaps="false"
        android:theme="@style/CustomTextAppearanceTab" />

</com.google.android.material.tabs.TabLayout>

даже я установил для этого стиль

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

но это не работает


person mozhi jafr    schedule 05.02.2020    source источник


Ответы (2)


нестандартный стиль

  <style name="customTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabTextAppearance">@style/TabTextAppearance</item>
</style>

<style name="TabTextAppearance" parent="@android:style/TextAppearance.Widget.TabWidget">
    <item name="android:textAllCaps">false</item>
</style>

макет вкладки XML-код

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tab"
    style="@style/customTabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
person Maitri    schedule 05.02.2020
comment
Большое спасибо. Я изменил ‹item name = android: textAllCaps› true ‹/item› на ‹item name = android: textAllCaps› false ‹/item›. И это сработало. Большое спасибо за ваш ответ - person mozhi jafr; 05.02.2020
comment
Родительский стиль неправильный. Вы должны использовать Widget.MaterialComponents.TabLayout для вкладок и TextAppearance.MaterialComponents.Button для tabTextAppearance - person Gabriele Mariotti; 05.02.2020

Вы можете воспользоваться тем фактом, что TabLayout использует тот же внешний вид текста, что и Button.

Сначала добавьте новый внешний вид текста:

<style name="TextAppearance.MyApplication.Button" parent="TextAppearance.MaterialComponents.Button">
    <item name="android:textAllCaps">false</item>
</style>

Во-вторых, примените его как textAppearanceButton в теме приложения:

<item name="textAppearanceButton">@style/TextAppearance.MyApplication.Button</item>

Конечно, это решение работает, если вы не хотите оставить textAllCaps для Button.

person Piotr Aleksander Chmielowski    schedule 29.10.2020