Ble*_*ker 0 android android-viewpager android-tablayout
一个非常简单的例子.我想大多数人都是以这种方式实现一个标签.但标签文本只是缺失.
设计支持lib的版本是最新的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" />
Run Code Online (Sandbox Code Playgroud)
我正在使用ButterKnife 8.2.1来绑定视图对象.这是我在onCreate()中的活动代码:
final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager(),
tabs.getTabCount());
tabs.setupWithViewPager(pager);
pager.setAdapter(adapter);
pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs));
Run Code Online (Sandbox Code Playgroud)
这是我的适配器:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里看到了类似的问题:在Fragment中使用TabLayout; 标签文字不可见
该问题的答案说这已在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;
}
Run Code Online (Sandbox Code Playgroud)
此外,由于您有固定数量的选项卡,您应该使用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" />
Run Code Online (Sandbox Code Playgroud)
更改您的适配器如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
并改变你的onCreate()如下:
final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);//call setAdapter() before setupWithViewPager()
tabs.setupWithViewPager(pager);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |