我正在进行滑动选项卡视图。我想把PagerTabStrip显示在SupportActionBar的底部。所有的选项卡内容都显示得很好,但问题是这些选项卡的标题没有显示,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);
}
}发布于 2016-07-15 17:56:45
从tab1.onCreateView(...)方法中删除这一行..。
((ViewPager.LayoutParams) (view.findViewById(R.id.tab_strip)).getLayoutParams()).isDecor = true;..。并将其添加到MainActivity.onCreate(...)方法中。你的应用程序会停止崩溃。
您的tab1片段类不了解R.id.tab_strip视图。这是MainActivity类的视图。
发布于 2016-07-14 20:00:43
你的问题重复了下面的问题:
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;
发布于 2016-07-17 21:03:22
我已经运行了您的代码,它正在运行normal.If您想要在您的ViewPager底部显示它,您可以使用“android:layout_gravity”并将其设置为底部。
https://stackoverflow.com/questions/38373647
复制相似问题