【问题标题】:How to lowercase all letter except first letter in TabLayout?如何小写TabLayout中除第一个字母外的所有字母?
【发布时间】:2019-08-28 18:52:33
【问题描述】:

我想将所有字母小写,但想将第一个字母保持大写,我想在 tabLayout 中实现这一点。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="23dp">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
            android:layout_height="match_parent"
            android:id="@+id/tabs"
            app:tabTextColor="@color/colorAccent"
            android:background="#fff">

        </android.support.design.widget.TabLayout>

    </android.support.design.widget.AppBarLayout>

</RelativeLayout>

这是我的 tabLayout 代码。我已经包含了以下行,但问题是,它的所有字母都小写了。

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

我也尝试过以编程方式执行此操作,即在我的片段中的 SectionsPagerAdapter 类中,因为我在我的活动中是 viewPager。 这是我的 SectionsPagerAdapter 类,

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public SectionsPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int i) {
    return mFragments.get(i);
}

@Override
public int getCount() {
    return mFragments.size();
}

public void addFragment(Fragment fragment, String fragTitle) {

    mFragments.add(fragment);
    mFragmentTitleList.add(fragTitle.toLowerCase());

}

@Override
public CharSequence getPageTitle(int position) {
    return mFragmentTitleList.get(position);
}

还要在我的工作活动(或片段)中调用它,我使用了以下代码,

public void setUpViewPager() {

    SectionsPagerAdapter adapter = new SectionsPagerAdapter(getChildFragmentManager());

    adapter.addFragment(new StudentsFragment(), "Students");

    adapter.addFragment(new ProfessorsFragment(), "Professors");

    adapter.addFragment(new AlumnusFragment(), "Alumnus");

    ViewPager viewPager = view.findViewById(R.id.container);

    viewPager.setAdapter(adapter);

    TabLayout tabLayout = view.findViewById(R.id.tabs);

    tabLayout.setupWithViewPager(viewPager);


}

在这里,我将名字命名为“学生、教授、校友”(所有字母都变为大写)。当我启动应用程序时,我希望它是相同的。但问题是当我在我的 tabLayout 中包含那一行以小写字母时,它也将第一个字母小写。我怎样才能实现或克服这个问题?

提前致谢!

【问题讨论】:

  • "当我在 tabLayout 中包含那一行以小写字母时,它也将第一个字母小写。" – 如果删除toLowerCase() 调用会发生什么?

标签: java android tabs android-tablayout


【解决方案1】:

也许这段代码 sn-p 会有所帮助,尝试将其应用于您的适配器类:

    public void addFragment(Fragment fragment, String fragTitle) {

    mFragments.add(fragment);
    fragTitle = fragTitle.toLowerCase()
    fragTitle = fragTitle.substring(0, 1).toUpperCase() + fragTitle.substring(1);
    mFragmentTitleList.add(fragTitle);

}

【讨论】:

  • 这似乎没有必要。标题已经以大写字母开头。
  • “但问题是当我在 tabLayout 中包含那一行来小写字母时,它也将第一个字母小写。我怎样才能实现或克服这个问题?提前谢谢!”...? ???是的,但是使用 toLowerCase() 方法,它们会变成小写...
  • 对,那么为什么不直接删除toLowerCase() 调用呢?从第一个字母大写的标题开始,然后转换为全小写,再次将第一个字母大写是毫无意义的。我正试图从 OP 那里得到澄清,说明他们为什么要从那里开始打电话。
  • 我想将所有字母小写,但想保留第一个字母大写。
  • 不,当我删除 toLowerCase() 时它不起作用,它仍然将所有文本保持为大写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2019-08-23
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
相关资源
最近更新 更多