2016-11-29 3 views
0

Я пытаюсь добавить tablayout в один из моих фрагментов, но, несмотря на все, что я нашел в Интернете, ничего не работает нормально. В других фрагментах я не хочу видеть макет вкладки.Tablayout внутри фрагмента

HomeFragment XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_height="match_parent"> 


    <android.support.design.widget.TabLayout 
     android:id="@+id/home_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     app:tabMode="scrollable" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/home_viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 

</LinearLayout> 

код HomeFragment:

общественного класса HomeFragment расширяет фрагмент {

private TabLayout _homeTabLayout; 
private ViewPager _homeViewPager; 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.home_fragment,container,false); 

    final TabLayout tabLayout = (TabLayout) v.findViewById(R.id.home_tabs); 
    final ViewPager viewPager = (ViewPager) v.findViewById(R.id.home_viewpager); 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
    adapter.addFragment(new SyncedEpisodesTabFragment(), "One"); 
    adapter.addFragment(new AvailableEpisodesTabFragment(), "Two"); 

    viewPager.setAdapter(adapter); 

    tabLayout.setupWithViewPager(viewPager); 


    return v; 

} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter (getChildFragmentManager()); 
    adapter.addFragment(new AvailableEpisodesTabFragment(), "PHOTOS"); 
    adapter.addFragment(new SyncedEpisodesTabFragment(), "HI-FIVES"); 
    viewPager.setAdapter(adapter); 
} 

private class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

}

приложение бар главный .xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    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" 
    android:fitsSystemWindows="true" 
    tools:context="com.follow.series.activities.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

       <!--I'm inserting the tab layout here--> 


    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     app:srcCompat="@android:drawable/ic_dialog_email" /> 



</android.support.design.widget.CoordinatorLayout> 

В этом случае я просто вижу viewpager с текстом без вкладок Когда я добавляю компоновку вкладок внутри панели инструментов, я все время вижу вкладки.

+1

Я считаю, что tablayout скрывается за панелью инструментов. попробуйте обернуть framelayout с помощью LinearLayout или RelativeLayout, чтобы он работал. Или вы можете попробовать добавить 'layout_below =" @ id/app_bar_layout "' в framelayout – ZeroOne

+0

Рамблем внутри координатораLayout это не RelativeLayout с атрибутом lyout_below, и я попытался обернуть макет фрейма линейным макетом, но без каких-либо успехов. –

ответ

2

С ответом Мухаммада Hafiq Iqmal мне удалось решить эту проблему, добавив еще один LinearLayout, которые содержат как всплывающую подсказку, и фрагмент контейнера

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    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" 
    android:fitsSystemWindows="true" 
    tools:context="com.follow.series.activities.MainActivity"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/app_bar_layout" 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:theme="@style/AppTheme.AppBarOverlay"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:popupTheme="@style/AppTheme.PopupOverlay" /> 




     </android.support.design.widget.AppBarLayout> 



     <FrameLayout 
      android:id="@+id/fragment_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 


    </LinearLayout> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     app:srcCompat="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 

Я не заметил этого, но теперь у меня есть вопрос с панелью инструментов внизу внизу находится тень, хотя она имеет макет вкладки. Я пытался играть с атрибутом elivation как в макете вкладок, так и в элементе панели инструментов, но без успеха strange shadow

0

для удаления тени Я использую следующую строку кода. Вы можете добавить это в ваших стилях, как я сделал:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
<item name="android:windowContentOverlay">@null</item> 
</style> 

Или написать эту строку как атрибут тулбара:

<android.support.v7.widget.Toolbar 
android:windowContentOverlay="@null" 
/> 

И я предлагаю использовать следующий атрибут в макете кадра, потому что без этого вида атрибута фрагмент может перекрывать вашу панель инструментов

app:layout_behavior="@string/appbar_scrolling_view_behavior" 
Смежные вопросы