2015-12-19 60 views
3

我正在开发一个应用程序,其中在我的MainActivity中我使用导航抽屉切换帧布局上的片段。TabLayout与片段上的ViewPager - Lolipop设备

其中一个片段是“帮助”片段,其中我使用的标签布局和viewpager三页中刷卡,“关于我们”,“帮助” &“联系我们”

一切正常罚款在下面的棒棒糖devices.The操作栏似乎坚持选项卡布局(使用工具栏作为一个操作栏)。

但是在棒棒糖设备上,它显示为像操作栏和tablayout分开。

我该如何在棒棒糖设备上实现同样的效果呢?

MainActivity:

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; 
    } 
}} 

enter image description here

+0

请你加入活动代码在这里? – Mohsen

+0

发布您的xml代码 –

+0

这可能有助于http://stackoverflow.com/a/26725601/1709595 –

回答

1

尝试设置工具栏的高度动态地加入以下代码:

 appBarLayout.setElevation(0); 
2

好像你有海拔在你的风格XML操作栏设置。

对于Android 5.0以上版本,如果你想为在下面设置动作条的风格:

<item name="android:elevation">0dp</item> 

和支持库兼容使用:

<item name="elevation">0dp</item> 

风格的程序兼容性光主题示例:

<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> 

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

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> 
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item> 
</style> 

而且预5.0的Android,也添加到您的应用主题:

<!-- Remove shadow below action bar Android < 5.0 --> 
<item name="android:windowContentOverlay">@null</item>