滑动选项卡布局文本为大写

问题描述 投票:0回答:5

您好,我在我的应用程序中使用滑动选项卡布局,一切都很好。我唯一不明白的是为什么我的选项卡文本是大写的。

我已经打印了选项卡在滑动选项卡类内部的文本,并且它们不是大写的。我环顾四周,没有调用 toUpperCase 方法。

以下是设置文本的类中的代码:

  private void populateTabStrip() {
        final PagerAdapter adapter = mViewPager.getAdapter();
        final View.OnClickListener tabClickListener = new TabClickListener();

        for (int i = 0; i < adapter.getCount(); i++) {
            View tabView = null;
            TextView tabTitleView = null;

            if (mTabViewLayoutId != 0) {
                // If there is a custom tab view layout id set, try and inflate it
                tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
                        false);
                tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
            }

            if (tabView == null) {
                tabView = createDefaultTabView(getContext());
            }

            if (tabTitleView == null && TextView.class.isInstance(tabView)) {
                tabTitleView = (TextView) tabView;
            }

            if (mDistributeEvenly) {
                LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView.getLayoutParams();
                lp.width = 0;
                lp.weight = 1;
            }

            tabTitleView.setText(adapter.getPageTitle(i));
            tabTitleView.setTextColor(getResources().getColor(R.color.da_blue));
            tabView.setOnClickListener(tabClickListener);
            String desc = mContentDescriptions.get(i, null);
            if (desc != null) {
                tabView.setContentDescription(desc);
            }

            mTabStrip.addView(tabView);
            if (i == mViewPager.getCurrentItem()) {
                tabView.setSelected(true);
            }
        }
    }

我确信我可以通过一种风格来做到这一点,但真的不确定使用哪一种。这就是我的风格:

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:actionBarTabTextStyle">@style/ActionBarTabTextStyle.Tabtheme</item>
        <item name="actionBarTabTextStyle">@style/ActionBarTabTextStyle.Tabtheme</item>
    </style>


    <style name="ActionBarTabTextStyle.Tabtheme" parent="@android:style/Widget.Holo.ActionBar.TabText">
        <item name="android:textAllCaps">false</item>
    </style>
</resources>
android android-tabs
5个回答
21
投票

如果使用“android.support.design.widget.TabLayout”需要设置

app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"


6
投票

在 createDefaultTabView() 方法中找到了答案。

需要将 textView.setAllCaps(true) 更改为 false。

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);
    textView.setLayoutParams(new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

    TypedValue outValue = new TypedValue();
    getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
            outValue, true);
    textView.setBackgroundResource(outValue.resourceId);
    textView.setAllCaps(false); **// Changed to false and it did the trick**

    int padding = (int) (TAB_VIEW_PADDING_DIPS * getResources().getDisplayMetrics().density);
    textView.setPadding(padding, padding, padding, padding);

    return textView;
}

1
投票

只需在 populateTabStrip() 中添加这一行

tabTitleView.setAllCaps(false);


0
投票

您可以通过使用样式值并在 tablayout 标签中将其称为

app:tabTextAppearance="@style/TextTabLayout"
来实现。

在您的样式值中只需添加此值,您还可以添加文本大小或字体系列。

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

0
投票

使用此代码

fun TabLayout.setFont(font: FontUtils.Fonts) {
    val vg = this.getChildAt(0) as ViewGroup
    for (i: Int in 0..vg.childCount) {
        val vgTab = vg.getChildAt(i) as ViewGroup?
        vgTab?.let {
            for (j: Int in 0..vgTab.childCount) {
                val tab = vgTab.getChildAt(j)
                if (tab is TextView) {
                    tab.textAllCaps=false
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.