如何将 TabLayout 中除第一个字母外的所有字母小写?
How to lowercase all letter except first letter in TabLayout?
我想将所有字母小写,但希望将第一个字母保持大写,我想在 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 class 中,因为我在我的 activity 中是 viewPager,所以我有我的片段。
这是我的 SectionsPagerAdapter Class,
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);
}
同样在我的工作activity(或Fragment)中调用它,我使用了以下代码,
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);
}
这里我给的名字是"Student, Professors, Alumnus"(所有字母都大写了)。我希望它在我启动应用程序时是一样的。但问题是,当我在我的 tabLayout 中包含一行以小写字母时,它也会小写第一个字母。我怎样才能实现或克服这个问题?
提前致谢!
也许此代码片段会有所帮助,请尝试将其应用于您的适配器 class:
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 中实现这一点。
<?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 class 中,因为我在我的 activity 中是 viewPager,所以我有我的片段。 这是我的 SectionsPagerAdapter Class,
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);
}
同样在我的工作activity(或Fragment)中调用它,我使用了以下代码,
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);
}
这里我给的名字是"Student, Professors, Alumnus"(所有字母都大写了)。我希望它在我启动应用程序时是一样的。但问题是,当我在我的 tabLayout 中包含一行以小写字母时,它也会小写第一个字母。我怎样才能实现或克服这个问题?
提前致谢!
也许此代码片段会有所帮助,请尝试将其应用于您的适配器 class:
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);
}