gpt4 book ai didi

android - 选项卡文本随 viewpager 消失

转载 作者:行者123 更新时间:2023-12-05 08:33:31 24 4
gpt4 key购买 nike

一个非常简单的例子。我认为大多数人都是以这种方式实现选项卡的。但是标签文本只是丢失了。

设计支持库版本为最新的24.2.0。

这是我的布局代码:

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
app:tabTextColor="@android:color/darker_gray"
app:tabSelectedTextColor="@android:color/white"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<android.support.design.widget.TabItem
android:text="@string/tab_domain"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<android.support.design.widget.TabItem
android:text="@string/tab_upload"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<android.support.design.widget.TabItem
android:text="@string/tab_download"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

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

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

我正在使用 ButterKnife 8.2.1 来绑定(bind) View 对象。这是我在 onCreate() 中的 Activity 代码:

    final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager(),
tabs.getTabCount());
tabs.setupWithViewPager(pager);
pager.setAdapter(adapter);
pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs));

这是我的适配器:

    class DiagnosePagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
List<Fragment> fragments = new ArrayList<>();

public DiagnosePagerAdapter(FragmentManager fm, int numberOfTabs) {
super(fm);
this.mNumOfTabs = numberOfTabs;
fragments.add(new DomainFragment());
fragments.add(new UploadFragment());
fragments.add(new DownloadFragment());
}

@Override
public Fragment getItem(int position) {
return fragments.get(position);
}

@Override
public int getCount() {
return mNumOfTabs;
}
}

我在这里看到了类似的问题:Using TabLayout inside a Fragment; tab text invisible

该问题的答案说这个问题已在 23.0.0 中修复,并且所有解决方法都不适用于我的手机,包括小米 HM 2A 和华为设备。

最佳答案

您必须如下覆盖 getPageTitle()(我认为这会解决您的问题):

@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Domain";
case 1:
return "Upload";
case 2:
return "Download";
}
return null;
}

此外,由于您有固定数量的选项卡,因此您应该使用 FragmentPagerAdapter 而不是 FragmentStatePagerAdapter。然后如下更改您的 xml 布局:

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
app:tabTextColor="@android:color/darker_gray"
app:tabSelectedTextColor="@android:color/white"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />

如下更改您的适配器:

class DiagnosePagerAdapter extends FragmentPagerAdapter {

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

@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new DomainFragment();
break;
case 1:
fragment = new UploadFragment();
break;
case 2:
fragment = new DownloadFragment();
break;
}
return fragment;
}

@Override
public int getCount() {
return 3;
}

@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Domain";
case 1:
return "Upload";
case 2:
return "Download";
}
return null;
}

}

然后如下更改您的 onCreate() :

final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);//call setAdapter() before setupWithViewPager()
tabs.setupWithViewPager(pager);

关于android - 选项卡文本随 viewpager 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com