我正在制作滑动标签视图。我想在SupportActionBar的底部显示PagerTabStrip。所有选项卡内容都显示良好,但问题是这些选项卡的标题没有显示,PagerTabStrip也没有显示在SupportActionBar的底部。
main_tab.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" >
<android.support.v4.view.PagerTabStrip
android:layout_width="wrap_content"
android:layout_height="100dp"
android:background="#e62117"
android:id="@+id/tab_strip"
android:focusableInTouchMode="false">
</android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
</LinearLayout>
tab1,tab2,tab3:类似
public class tab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab1,container,false);
return view;
}
}
ma_page_adapter:
public class ma_pager_adapter extends FragmentPagerAdapter {
public ma_pager_adapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
tab1 t1 = new tab1();
return t1;
case 1:
tab2 t2 = new tab2();
return t2;
case 2:
tab3 t3 = new tab3();
return t3;
}
return null;
}
@Override
public int getCount() {
return 3;
}//set the number of tabs
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return "Top stories";
case 1:
return "Members";
case 2:
return "Setting";
}
return null;
}
}
MainActivity:
ViewPager pager;
PagerTabStrip tab_strp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_tab);
ma_pager_adapter mapager = new ma_pager_adapter(getSupportFragmentManager());
pager = (ViewPager)findViewById(R.id.pager);
pager.setAdapter(mapager);
// tab_strp = (PagerTabStrip) findViewById(R.id.tab_strip);
((ViewPager.LayoutParams) findViewById(R.id.tab_strip).getLayoutParams()).isDecor = true;
// tab_strp.setTextColor(Color.WHITE);
}
}
答案 0 :(得分:2)
您的问题重复了以下问题:
PagerTabStrip not showing in ViewPager in app targeting Android 6.X (N)
对于定位Android N的应用,您需要使用以下解决方法:
在onCreateView()中,添加以下内容:
((ViewPager.LayoutParams)(view.findViewById(R.id.tab_strip))。getLayoutParams())。isDecor = true;
答案 1 :(得分:2)
我已经运行了你的代码,它运行正常。如果你想在你的ViewPager的底部显示它,你可以使用&#34; android:layout_gravity&#34;并将其设置为底部。
答案 2 :(得分:0)
从tab1.onCreateView(...)
方法中删除此行...
((ViewPager.LayoutParams) (view.findViewById(R.id.tab_strip)).getLayoutParams()).isDecor = true;
...并将其添加到您的MainActivity.onCreate(...)
方法中。您的应用将停止崩溃。
您的tab1
Fragment类不了解R.id.tab_strip
视图。这是MainActivity
类的视图。