Android 在片段上使用ViewPager进行表格布局-棒棒糖设备

Android 在片段上使用ViewPager进行表格布局-棒棒糖设备,android,android-viewpager,android-tablayout,Android,Android Viewpager,Android Tablayout,我正在开发一个应用程序,在我的主要活动中,我使用导航抽屉切换框架布局上的片段 其中一个片段是“帮助”片段,我使用一个选项卡布局和一个viewpager在三个页面之间滑动,“关于我们”、“帮助”和“联系我们” 在下面的棒棒糖设备上,一切都很好。actionbar似乎坚持选项卡布局(将工具栏用作actionbar) 但在棒棒糖设备上,它的显示方式就像actionbar和tablayout是分开的 如何在棒棒糖设备上实现同样的效果 主要活动: public class MainActivity ext

我正在开发一个应用程序,在我的主要活动中,我使用导航抽屉切换框架布局上的片段

其中一个片段是“帮助”片段,我使用一个选项卡布局和一个viewpager在三个页面之间滑动,“关于我们”、“帮助”和“联系我们”

在下面的棒棒糖设备上,一切都很好。actionbar似乎坚持选项卡布局(将工具栏用作actionbar)

但在棒棒糖设备上,它的显示方式就像actionbar和tablayout是分开的

如何在棒棒糖设备上实现同样的效果

主要活动:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

NavigationView navigationView;
ActionBarDrawerToggle toggle;
DrawerLayout drawer;
FragmentManager fm = getSupportFragmentManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("Title");

    drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.nav_help) {
         getSupportActionBar().setTitle("Help");
        fm.beginTransaction().replace(R.id.l_frame_layout, new Help(),"help").commit();
    } 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;}
Help.java

public class Help extends Fragment {
ViewPager pager;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.layout_help, container, false);
    return(rootView);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    final TabLayout tabLayout = (TabLayout)getActivity(). findViewById(R.id.tllayout_helpTABLAYOUTtl);
    tabLayout.addTab(tabLayout.newTab().setText("ABOUT"));
    tabLayout.addTab(tabLayout.newTab().setText("HELP"));
    tabLayout.addTab(tabLayout.newTab().setText("CONTACT"));

    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    actionBar = getActivity().getActionBar();

    pager = (ViewPager)getActivity().findViewById(R.id.vplayout_helpVIEVPAGERvp);
    pager.setAdapter(new MyPagerAdapter(getFragmentManager()));

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            pager.setCurrentItem(tab.getPosition());
        }
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }
        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }
        @Override
        public void onPageSelected(int position) {


        }
        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
}

class MyPagerAdapter extends FragmentStatePagerAdapter {
    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int pos) {
        switch(pos) {

            case 0: AboutUs tab1 = new AboutUs();
                return  tab1;

            case 1: HelpRecharge tab2 = new HelpRecharge();
                return  tab2;

            case 2: ContactUs tab3 = new ContactUs();
                return  tab3;

            default: return  null;
        }
    }

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

您似乎在样式xml中为动作栏设置了标高

对于Android 5.0+,如果您想按如下方式设置actionbar样式:

<item name="android:elevation">0dp</item>
0dp
为了支持库兼容性,请使用:

<item name="elevation">0dp</item>
0dp
AppCompat灯光主题的样式示例:

<style name="Theme.MyApp.ActionBar" parent="style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
   <!-- remove shadow below action bar -->
   <!-- <item name="android:elevation">0dp</item> -->
   <!-- Support library compatibility -->
   <item name="elevation">0dp</item>
</style>

0dp
然后将此自定义ActionBar样式应用于您的应用程序主题:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>
<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>

@style/Theme.MyApp.ActionBar
同样对于5.0之前的Android,也可以将此添加到您的应用程序主题中:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>
<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>

@空的

尝试通过添加以下代码动态设置工具栏的标高:

        appBarLayout.setElevation( 0 );

请在这里添加活动代码好吗?这可能会有所帮助