我已android:textAllCaps="false"
在我的android.support.design.widget.TabLayout
想法是分别表示只有全部大写选项卡标题。
如何移除所有盖子?
我已android:textAllCaps="false"
在我的android.support.design.widget.TabLayout
想法是分别表示只有全部大写选项卡标题。
如何移除所有盖子?
Answers:
设计库更新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属性设置为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>
textAllCaps
而问题正在使用android:textAllCaps
。
android:textAllCaps
android:textAllCaps
并将textAllCaps
它们设置为false,以使我的文本按需要显示(即“本地”而不是“本地”)。单独尝试任何一个都不行。
@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"
/>
android.support.design.widget.TabLayout
。
com.google.android.material.tabs.TabLayout
使用此属性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" />
对于那些无法得到其他答案的人。
当您具有单行制表符文本时,定义样式可以很好地工作。如果你仔细看进TabLayout,你会看到,它的使用领域design_tab_text_size_2line当标签具有多条线路。
我发现影响此字段的唯一方法是在dimen文件中覆盖它。
因此,将其放在您的values / dimens.xml中
<dimen name="design_tab_text_size_2line" tools:override="true">10sp</dimen>
希望能帮助到你。
就我而言,有两种变体可以工作:
1)由Bogdan(susemi99):
<android.support.design.widget.TabLayout
app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
/>
2)Paresh Mayani发表。我想有android:textAllCaps="false"
而android:textSize="15sp"
同时,让他的老方法工作。
在styles.xml
写入(母体可能会发生变化,例如, “@android:风格/ 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"
/>
这是简单的解决方案。...享受
for (int tabIndex = 0; tabIndex <tabLayout.getTabCount() ; tabIndex++) {
TextView tabTextView = (TextView)(((LinearLayout)((LinearLayout)tabLayout.getChildAt(0)).getChildAt(tabIndex)).getChildAt(1));
tabTextView.setAllCaps(false);
}
在版本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>
试试下面的方法,你可以实现的所有方法TextView
中TabLayout
private void setCustomTab() {
ViewGroup vg = (ViewGroup) mTabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildsCount = vgTab.getChildCount();
for (int i = 0; i < tabChildsCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(ResourcesCompat.getFont(this,R.font.montserrat_medium));
((TextView) tabViewChild).setAllCaps(false);
}
}
}
}
希望能帮助到你。
更改: <item name="android:textAllCaps">false</item>
带有: <item name="textAllCaps">false</item>
您也可以在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)。
只需将其添加到您的自定义样式文件
<item name="android:textStyle">normal</item>
我阅读了上述所有解决方案,并得出了所有结论。