100

タブのタイトルをすべて大文字で表示するように設定android:textAllCaps="false"しました。android.support.design.widget.TabLayout

すべての大文字を削除するにはどうすればよいですか?

4

16 に答える 16

202

デザイン ライブラリ 23.2.0+ の更新

元の回答は、デザイン ライブラリ 23.2.0 以降では機能しません。コメントで指摘された@fahmad6に感謝します。誰かがそのコメントを見逃した場合に備えて、ここに記載します。すべての大文字設定を無効にするには、textAllCapsとの両方を設定する必要があります。android:textAllCapsfalse

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

元の答え

デフォルトでは、タブは TabLayout によって作成され、textAllCaps プロパティが true に設定されます。このフラグを false にするスタイルを定義する必要があります。

<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>
于 2015-07-09T06:45:28.743 に答える
88

@Paresh Mayaniの答えは正しいですが、タブスタイルのみを作成できます

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

そして、それを使用して

<android.support.design.widget.TabLayout
    app:tabTextAppearance="@style/MyCustomTextAppearance"
    .../>
于 2015-11-02T11:36:10.333 に答える
39

https://stackoverflow.com/a/34678235/1025379

<android.support.design.widget.TabLayout
    app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
/>
于 2016-03-24T00:07:30.840 に答える
15

私の場合、2 つのバリアントが機能します。

1) ボグダン (susemi99):

<android.support.design.widget.TabLayout
    app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
/>

2) パレシュ・マヤニ著。android:textAllCaps="false"私はと をandroid:textSize="15sp"同時に持ちたかったので、彼の古い方法が機能します。

書き込み (親は異なる場合があります。styles.xmlたとえば、「@android:style/TextAppearance.Widget.TabWidget」、「TextAppearance.Design.Tab」):

<style name="TabLayout" parent="Widget.Design.TabLayout">
    <item name="tabIndicatorColor">@color/color_blue</item>
    <item name="tabSelectedTextColor">@color/color_blue</item>
    <item name="tabTextColor">@color/black</item>
    <item name="tabTextAppearance">@style/TabLayoutTextAppearance</item>
</style>

<style name="TabLayoutTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="android:textSize">15sp</item>
    <item name="textAllCaps">false</item>
    <item name="android:textAllCaps">false</item>
</style>

このスタイルをレイアウトに適用:

<android.support.design.widget.TabLayout
    android:id="@+id/tab_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/TabLayout"
    />
于 2018-08-02T09:17:03.800 に答える
5

ここに簡単な解決策があります....お楽しみください

 for (int tabIndex = 0; tabIndex <tabLayout.getTabCount() ; tabIndex++) {
        TextView tabTextView = (TextView)(((LinearLayout)((LinearLayout)tabLayout.getChildAt(0)).getChildAt(tabIndex)).getChildAt(1));
        tabTextView.setAllCaps(false);
    }
于 2016-10-06T07:28:11.403 に答える
3

これは私のために働いた...

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

<style name="TabTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="textAllCaps">false</item>
</style>
于 2019-12-05T06:00:39.990 に答える
2

14 より前のバージョンでは、設定する必要があります (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>

ただし、Android のバージョンが 14 以上の場合は、次のように設定する必要があります。

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

そのため、14 より前と後のバージョンとの互換性が必要な場合は、フォルダー values-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>
于 2015-07-31T15:26:40.850 に答える
0

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) をコメントアウトしました。

于 2015-10-28T03:05:48.343 に答える