TabLayout简单使用以及+Fragment配合
2017-09-29 16:31
309 查看
我使用的 android studio进行开发的,所以引用TabLayout很简单,
只要在build.gradle中加入compile ‘com.android.support:design:22.2.0’即可
或者直接写成(compile “com.android.support:design:$supportLibVersion”)。
ext {
supportLibVersion = “25.0.1”
}
代码:
常用套路:
切换方法:
资源属性:
res-values-array文件里面添加:例如:
布局里面可以写成:
附上一个可能需要的功能:
可以写在工具类里面,直接调用。(一个是显示一半中间线方法,一个是显示全部中间线。)
使用方法直接调用,并写上对应的参数:
至于Fragment每个人添加方式不同,这里只举一中例子:
.
.
.
布局里写一个控件用于填充:
代码里,这样写用于添加Fragment:
这里就是加上 Fragment的切换 Fragment的方法:
只要在build.gradle中加入compile ‘com.android.support:design:22.2.0’即可
或者直接写成(compile “com.android.support:design:$supportLibVersion”)。
ext {
supportLibVersion = “25.0.1”
}
代码:
常用套路:
String[] titles = getResources().getStringArray(R.array.visit_summary); for (int i = 0; i < titles.length; i++) { tab.addTab(tab.newTab().setText(titles[i])); } // showIndex(0);//初始化 显示 tab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { showIndex(tab.getPosition());//切换显示-文末有一个直接组合Fragment的切换方法 } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } });
切换方法:
//切换标签页 private void showIndex(int index) { //第一页是总结评估-可编辑页面 if (index == 0) { } else if (index == 1) { } else if (index == 3) { } }
资源属性:
res-values-array文件里面添加:例如:
<string-array name="visit_summary"> <item>拜访预约</item> <item>拜访现场</item> <item>拜访承诺</item> </string-array>
布局里面可以写成:
<android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerVertical="true" android:background="@drawable/visit_summary_bg"//设置背景 app:tabBackground="@drawable/visit_summary_bg_tab"//这是每个页签的背景 app:tabGravity="fill"//页签状态(填充慢) app:tabIndicatorColor="@null"//标签底部标识颜色 app:tabMode="fixed"//样式固定 app:tabSelectedTextColor="@color/white" 被选中的页签的字体颜色 />
附上一个可能需要的功能:
可以写在工具类里面,直接调用。(一个是显示一半中间线方法,一个是显示全部中间线。)
使用方法直接调用,并写上对应的参数:
public static final int TABLAYOUT_NORMAL_COLOR=0;//默认颜色 常量 /**//代码中直接调用 * tab TabLayout 对象 * getContext() 当前类 * Constants.TABLAYOUT_NORMAL_COLOR 使用默认的背景资源 */ Utils.showTableLayoutDividerMiddle(tab, getContext(), Constants.TABLAYOUT_NORMAL_COLOR);
/**一个是显示一半中间线方法: * TabLayout(自定义的控件) 的中间线设置 **一半的显示** * * @param view TabLayout 对象 * @param context 当前类 * @param drawable 背景资源 */ public static void showTableLayoutDividerMiddleHalf(TabLayout view, Context context, int drawable) { //重新计算控件高度 int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(w, h); LinearLayout linearLayout = (LinearLayout) view.getChildAt(0); linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);//设置样式,中间线样式 linearLayout.setDividerPadding(view.getMeasuredHeight() / 4);//设置线的大小,间隔距离上下各为1/4,也就是1/2一半的大小 int lineDrawable = R.drawable.visit_summary_bg_line;//默认背景(颜色:灰色,大小1px) if (drawable != Constants.TABLAYOUT_NORMAL) { lineDrawable = drawable; } linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, lineDrawable));//设置线 }
/**一个是显示全部中间线 * TabLayout(自定义的控件) 的中间线设置 显示 * * @param view TabLayout 对象 * @param context 当前类 * @param drawable 背景资源 */ public static void showTableLayoutDividerMiddle(TabLayout view, Context context, int drawable) { LinearLayout linearLayout = (LinearLayout) view.getChildAt(0); linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);//设置样式,中间线样式 int lineDrawable = R.drawable.visit_summary_bg_line;//默认背景(颜色:灰色,大小1px) if (drawable != Constants.TABLAYOUT_NORMAL) { lineDrawable = drawable; } linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, lineDrawable));//设置线 }
至于Fragment每个人添加方式不同,这里只举一中例子:
.
.
.
布局里写一个控件用于填充:
<LinearLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="10dp" android:orientation="vertical"></LinearLayout>
代码里,这样写用于添加Fragment:
private Fragment1 fragment1; private Fragment2 fragment2; private Fragment3 fragment3; private void addFragment() { fragment1= new Fragment1 ();//创建对象 fragment1.setVisitId(visitId);//设置一些属性(不需要,可以不用) fragment1.setEditMode(editMode);//设置一些属性(不需要,可以不用) fragment1.setSomeListener(someListener);//设置一些监听(不需要,可以不用) fragment2= new Fragment2 (); fragment2.setVisitId(visitId); fragment2.setEditMode(editMode); fragment2.setSomeListener(someListener); fragment3= new Fragment3(); fragment3.setVisitId(visitId); fragment3.setEditMode(editMode); fragment3.setSomeListener(someListener); FragmentManager fm = getChildFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.add(R.id.container, Fragment1 , "fragment1").show(fragment1); transaction.add(R.id.container, Fragment2 , "fragment2").hide(fragment2); transaction.add(R.id.container, Fragment3 , "fragment3").hide(fragment3); transaction.commit(); }
这里就是加上 Fragment的切换 Fragment的方法:
private void showIndex(int index) { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); List<Fragment> fragments = getChildFragmentManager().getFragments(); for (int i = 0; i < fragments.size(); i++) { if (i == index) { transaction.show(fragments.get(i)); } else { transaction.hide(fragments.get(i)); } } transaction.commit(); }
相关文章推荐
- Android开发ViewPager的预加载和Fragment的销毁问题,以及tabLayout+ViewPager的使用,tablayout平板适配问题解决
- TabLayout与ViewPager和Fragment、FragmentPagerAdapter的配合使用
- TabLayout的简单使用(TabLayout+Fragment+ViewPager)
- Design下的TabLayout和Fragment和ViewPager联动的简单使用
- TabLayout和ViewPager以及Fragment实现超级简单导航栏
- 示例代码中的 SlidingTabLayout 简单使用(二)
- TabLayout+Fragment+ViewPager联合使用
- TabLayout的简单使用
- android中fragment简单使用以及fragment之间数据交互
- TabLayout+ViewPage+Fragment的使用
- TabLayout+ViewPager简单使用
- 在Fragment中使用TabLayout,TabLayout不能正常显示的问题。
- TabLayout的简单使用
- TabLayout简单使用
- SmartTabLayout+PtrFrameLayout+ViewPager+Fragment简单实现
- Android Material Design(4) CoordinatorLayout,AppBarLayout,Toolbar以及TabLayout的使用
- ActionBar简单使用——添加搜索按钮;让不同的Activity上显示不同的ActionBar;添加Tab标签;实现DrawerLayout并用ActionBarDrawerToggle控制
- Android 在Fragment中使用TabLayout时标题不显示问题
- 示例代码中的 SlidingTabLayout 简单使用(一)
- TabLayout+ViewPager的简单使用