android - 使用tablayout + view pager 实现 底部tab (bottom tab)
访问量: 3087
参考:http://blog.csdn.net/wufeng55/article/details/53080602 和 http://blog.csdn.net/wufeng55/article/details/53064763
安卓实现底部tab 貌似有多种方法, 包括:
radiogroup(很少用了)
tabhost
tablayout
下面是使用tab_layout的实现方法.
1. 建立 TabFragment:
package test.testandroidbottomtab; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class TabFragment extends android.support.v4.app.Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){ TextView textView = new TextView(getContext()); textView.setText("TabFragment"); return textView; } }
2. 添加 SweetTabAdapter.java:
package test.testandroidbottomtab; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; /** * Created by siwei on 17-6-22. */ public class SweetTabAdapter extends FragmentPagerAdapter { Context myContext; List pagerList; String[] titles = { "title1", "title2", "title3"}; private static final int[] icons = {R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher }; public SweetTabAdapter(Context context, FragmentManager fm){ super(fm); myContext = context; pagerList = new ArrayList<>(); for(int i=0; i< 3; i++){ pagerList.add(new TabFragment()); } } @Override public int getCount(){ return pagerList != null ? pagerList.size() : 0; } @Override public Fragment getItem(int position){ return pagerList.get(position); } public View getTabView(int position){ View view = LayoutInflater.from(myContext).inflate(R.layout.tab_view, null); TextView tv = (TextView) view.findViewById(R.id.tab_title); tv.setText(titles[position]); ImageView imageView = (ImageView) view.findViewById(R.id.tab_icon); imageView.setImageResource(icons[position]); return view; } }
3. 添加 tab_view.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"> <ImageView android:id="@+id/tab_icon" android:background="@mipmap/ic_launcher" android:layout_width="24dp" android:layout_height="24dp" /> <TextView android:id="@+id/tab_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
4. activity_main.xml 如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_above="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
5. MainActivity.java :
package com.yunbi; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; /** * 多tab Activity 示例. 实现多个tab 需要用Fragment, 一般配合ViewPager和TabLayout使用 */ public class SweetTabActivity extends AppCompatActivity { ViewPager viewPager; TabLayout tableLayout; SweetTabAdapter sweetTabAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(com.yunbi.R.layout.activity_sweet_tab); viewPager = (ViewPager) findViewById(com.yunbi.R.id.view_pager); tableLayout = (TabLayout) findViewById(com.yunbi.R.id.tab_layout); sweetTabAdapter = new SweetTabAdapter(this, getSupportFragmentManager()); viewPager.setAdapter(sweetTabAdapter); tableLayout.setTabMode(TabLayout.MODE_FIXED); tableLayout.setupWithViewPager(viewPager); tableLayout.getTabAt(0).select(); // 给TableLayout添加tab选项卡 for (int i = 0 ; i < sweetTabAdapter.getCount() ; i++){ TabLayout.Tab tab = tableLayout.getTabAt(i); tab.setCustomView(sweetTabAdapter.getTabView(i)); } } }