android:textAllCaps =“false”不适用于TabLayoutdevise支持

我已经在我的android.support.design.widget.TabLayout设置了android:textAllCaps="false" ,它认为它只显示全部大写的标题标题。

我怎样才能删除所有上限?

Related of "android:textAllCaps =“false”不适用于TabLayoutdevise支持"

更新为devise库23.2.0 +

原始答案不适用于devise库23.2.0或更高版本。 感谢@ fahmad6在评论中指出,如果有人错过了这个评论,我会把它放在这里。 您需要将textAllCapsandroid:textAllCaps都设置为false以禁用所有大写设置。

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

原来的答案

默认情况下,TabLayout创build的选项卡将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> 

@Paresh Mayani的答案是正确的,但是你只能创build标签样式

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

在第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之前和之后的版本兼容,则需要在该文件夹中创build文件夹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> 

这里是简单的解决scheme….享受

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

使用这个属性的app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"这将工作。

  <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" app:tabGravity="fill" app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" app:tabIndicatorColor="@color/colorPrimary" app:tabMode="fixed" app:tabPaddingStart="0dp" /> 

您也可以在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资源文件如下所示:

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

但是,如果它具有所有大写字母> TITLE WITH ALL CAPS <您仍然可以在您的选项卡中获得所有大写字母。

我没有做任何其他的改变。

值得注意的是,你也可以设置textView.setAllCaps(false),但这在我的情况下没有什么不同。 我刚刚注释掉了textView.setAllCaps(true)。