2015-12-19 2 views
3

Я разрабатываю приложение, где в моем MainActivity я использую навигационный ящик для переключения фрагментов на макет фрейма.TabLayout с ViewPager на фрагменте - устройства Lolipop

Один из этих фрагментов является «помощь» Фрагмент, в котором я использую макет Tab и ViewPager красть из трех страниц, «О нас», «помощь» & «связаться с нами»

все работает отлично на нижних ледяных устройствах. Панель действий, похоже, придерживается макета вкладки (используемая панель инструментов в качестве панели действий).

Но на устройствах Lollipop оно отображается как панель действий, а вкладка разделена.

Как я могу добиться того же и на леденцовых устройствах?

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+, если вы хотите установить свой стиль ActionBar, как показано ниже:

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

и для поддержки использования совместимости библиотека:

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

Пример стиля для светлой темы 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> 

Затем примените этот пользовательский стиль 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> 
Смежные вопросы