2016-01-19 97 views
1

的底部我使用android.support.design.widget,我需要在屏幕下方的設置TabLayout的位置在activity_main.xmlTabLayout位置在屏幕

我已經看到了你可以使用TabHost,但我更喜歡使用android.support.design

ativity_main.xml

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/custom_tab_layout_height" 
     app:tabMode="fixed" 
     app:tabGravity="fill"/> 
</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 


    TextView tabOne = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
    tabOne.setText("ONE"); 
    tabOne.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_tab_call, 0, 0); 
    tabLayout.getTabAt(0).setCustomView(tabOne); 


    TextView tabTwo = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null); 
    tabTwo.setText("TWO"); 
    tabTwo.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.iconos, 0, 0); 
    tabLayout.getTabAt(1).setCustomView(tabTwo); 

} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFrag(new OneFragment(), ""); 
    adapter.addFrag(new TwoFragment(), ""); 
    adapter.addFrag(new ThreeFragment(), ""); 
    viewPager.setAdapter(adapter); 
} 

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 addFrag(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

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

任何想法? 謝謝。

回答

1

我Tablayout是的LinearLayout裏面,你看下面,給了「自下而上」的LinearLayout的TP重力,這是我如何使用它在我的課click here

<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="460dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="80dp" 
     android:layout_gravity="bottom" 
     android:gravity="center"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tablayout_home" 
      android:layout_width="match_parent" 
      android:layout_height="80dp" 
      app:tabGravity="fill" 
      app:tabMode="fixed" /> 


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