Android 单个页面上的选项卡
我目前正在使用带有Android 单个页面上的选项卡,android,xml,android-viewpager,android-tabs,Android,Xml,Android Viewpager,Android Tabs,我目前正在使用带有PagerTabStrip的ViewPager在设备顶部显示4个选项卡。我所要做的就是将4个选项卡固定在适当的位置并居中,但由于旧方法(使用操作栏选项卡)已被弃用,我想不出如何做到这一点 基本上我有这样的东西: 但是我想让我的4个标签都在同一页上(都可见) 这是我将寻呼机适配器设置为ViewPager的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(s
PagerTabStrip
的ViewPager
在设备顶部显示4个选项卡。我所要做的就是将4个选项卡固定在适当的位置并居中,但由于旧方法(使用操作栏选项卡)已被弃用,我想不出如何做到这一点
基本上我有这样的东西:
但是我想让我的4个标签都在同一页上(都可见)
这是我将寻呼机适配器设置为ViewPager
的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new MainPagerAdapter(getSupportFragmentManager()));
}
这是相关的XML:
<android.support.v4.view.ViewPager
android:id="@+id/pager"
tools:context=".MainActivity"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.PagerTabStrip
android:id="@+id/pager_tab_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="@color/theme_color"
android:textColor="#fff"
android:paddingTop="18dp"
android:paddingBottom="18dp"/>
</android.support.v4.view.ViewPager>
但我找不到任何可靠的答案。同样的问题。如果您需要更多信息,请在下面的评论中发布
首先,要将库添加到gradle中的项目中,或者安装库
Gradle添加编译'com.jpardogo.materialtabstrip:library:1.0.9'或在
XML
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primary"
android:minHeight="56dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark"/>
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_below="@+id/toolbar"
android:background="@color/primary"
android:textColorPrimary="@color/white"
app:pstsDividerColor="@color/primary"
app:pstsIndicatorColor="@color/white"
app:pstsIndicatorHeight="2dp"
app:pstsShouldExpand="true"
app:pstsUnderlineHeight="0dp"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tabs"/>
</RelativeLayout>
main活动
public class MainActivity extends AppCompatActivity {
ViewPager viewPager;
PagerAdapter pagerAdapter;
PagerSlidingTabStrip pagerSlidingTabStrip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new PagerAdapter(getSupportFragmentManager());
pagerSlidingTabStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs);
viewPager.setAdapter(pagerAdapter);
pagerSlidingTabStrip.setViewPager(viewPager);
}
}
如果你想知道我是如何设计这个应用的,我也会把它贴出来,让我知道
更新
如果你想把阴影放在标签下面,我也可以贴出来 您正在尝试创建这样的“材质设计”选项卡吗?没错。但是我知道怎么做的方法已经被Android L弃用了,所以我很迷茫。我将使用另一个库为您发布代码。我只需要知道您是否使用fragment作为选项卡。谢谢——是的,使用fragment。非常好用!谢谢。@uj-没问题。继续!快速问题:您是否知道是否可以在特定选项卡中嵌套另一个pagerslidingtastrip
,而不附加ViewPager
?我想在PagerSlidingTabStrip
的第一个选项卡下放置两个选项卡,但我不想在它们之间滑动,因为这会干扰第一组选项卡的ViewPager
。如果你不知道如何使用它,这很酷。你可以在一个viewpager中添加另一个viewpager。只需将viewpager的高度设置为小,这样您就可以在主页之间滑动。如果我将viewpager的高度设置为小,这不会隐藏它所浏览的片段吗?
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
private Fragment f = null;
@Override
public Fragment getItem(int position) { // Returns Fragment based on position
switch (position) {
case 0:
f = new FragmentPageOne();
break;
case 1:
f = new FragmentPageTwo();
break;
}
return f;
}
@Override
public int getCount() { // Return the number of pages
return 2;
}
@Override
public CharSequence getPageTitle(int position) { // Set the tab text
if (position == 0) {
return "Fragment One";
}
if (position == 1) {
return "Fragment Two";
}
return getPageTitle(position);
}
}
public class MainActivity extends AppCompatActivity {
ViewPager viewPager;
PagerAdapter pagerAdapter;
PagerSlidingTabStrip pagerSlidingTabStrip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new PagerAdapter(getSupportFragmentManager());
pagerSlidingTabStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs);
viewPager.setAdapter(pagerAdapter);
pagerSlidingTabStrip.setViewPager(viewPager);
}
}