android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#fc18ce" app:tabIndicatorColor="#0000ff" app:tabSelectedTextColor="#00ff00" app:tabIndicatorHeight="2dp" app:tabTextAppearance="@style/TablayoutTextsize" app:tabTextColor="#ffff00" />作为谷歌的亲儿子,使用起来相对还是很方便的,而且查api也很便捷!不过此控件对于开发版本的要求还是挺高的,eclipse基本没戏,AS是个不错的选择。 《XML布局》compile 'com.android.support:design:23.2.0' AS开发的时候注意添加,否则是没有下面的那些属性的 -_-
xmlns:app="http://schemas.android.com/apk/res-auto"
<android.support.design.widget.TabLayout android:id="@+id/tab_title_top"<!-- app:tabIndicatorColor="" // 下方滚动的下划线颜色 app:tabSelectedTextColor="" // tab被选中后,文字的颜色 app:tabTextColor="" // tab默认的文字颜色 app:tabMaxWidth="100dp" //tab最大宽度 app:tabMinWidth="50dp" //tab最小宽度 app:tabPaddingStart="10dp" //距离开始位置 app:tabIndicatorHeight="2dp" //下划线高度 app:tabPaddingBottom="2dp" //距离底部位置 app:tabPaddingEnd="10dp" //距离尾端位置 --><!--设置tablayout文字大小属性--> <style name="TablayoutTextsize" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"> <item name="android:textSize">18sp</item> <item name="android:textAllCaps">false</item> </style>
《代码Activity》//可根据自己tab的多少来设置TabLayout的模式 tab_title_top.setTabMode(TabLayout.MODE_FIXED);//适合tab比较少的情况 tab_title_top.setTabMode(TabLayout.MODE_SCROLLABLE);//适合tab比较多的情况
此处就是各种数据的处理 如fragment tabTitles//设置tab和viewpager联动及自定义布局 tab_title_top.setupWithViewPager(vp_show); for (int i = 0; i < tab_title_top.getTabCount(); i++) { TabLayout.Tab tab = tab_title_top.getTabAt(i); View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab_view, null); TextView tv_show = (TextView) view.findViewById(R.id.tv_show); tv_show.setText(list_title.get(i)); ImageView iv_show = (ImageView) view.findViewById(R.id.iv_show); iv_show.setImageResource(R.drawable.ic_launcher); // iv_show.setImageResource(imageResId[position]); tab.setCustomView(adapter.getTabView(view)); }
//最后保存一下实例化状态@Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(POSITION, tab_title_top.getSelectedTabPosition()); outState.putInt(POSITION, tab_title_bottom.getSelectedTabPosition()); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); vp_show.setCurrentItem(savedInstanceState.getInt(POSITION)); }
《适配器:Adapter》public class VPAdapter extends FragmentPagerAdapter { private List<Fragment> list_fragment; //fragment列表 private List<String> list_Title; //tab名的列表 private Context context; public VPAdapter(Context context, FragmentManager fm, List<Fragment> list_fragment, List<String> list_Title) { super(fm); this.context=context; this.list_fragment = list_fragment; this.list_Title = list_Title; } @Override public Fragment getItem(int position) { return list_fragment.get(position); } @Override public int getCount() { return list_fragment.size(); } @Override public CharSequence getPageTitle(int position) { return list_Title.get(position % list_Title.size()); } //此处是自定义View的关键 public View getTabView(View view){ return view; } }
DEMO下载:点击打开链接
09-20
09-20
09-20