dede音乐网站源码,wordpress侧边栏图和标题,wordpress 获取页面,互联网舆情监测系统前言
原生 TabLayout 的指示器长度是充满整个屏幕的#xff0c;但在实际开发中 UI 会设计成 指示器的长度等于或者小于标题字体长度#xff0c;如图 如果设置成跟字体长度一样即使用 API:
mTabLayout.setTabIndicatorFullWidth(false);或者在 xml 布局文件中的TabLayout标签…前言
原生 TabLayout 的指示器长度是充满整个屏幕的但在实际开发中 UI 会设计成 指示器的长度等于或者小于标题字体长度如图 如果设置成跟字体长度一样即使用 API:
mTabLayout.setTabIndicatorFullWidth(false);或者在 xml 布局文件中的TabLayout标签设置 app:tabIndicatorFullWidth“false” 但如果想要指示器长度小于字体长度如上图API并未提供相关方法此时就需要我们自定义一个CustomTabLayout 继承 TabLayout允许开发者自定义选项卡的颜色、字体以及背景等属性。 二、自定义 View
public class CustomTabLayout extends TabLayout {private ListString titles;private int mSelectColor getResources().getColor(R.color.white);private int mUnSelectColor getResources().getColor(R.color.c_80ffffff);public CustomTabLayout(Context context) {this(context,null);}public CustomTabLayout(Context context, AttributeSet attrs) {this(context, attrs,0);}public CustomTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);TypedArray array context.obtainStyledAttributes(attrs, R.styleable.CustomTabLayout);mSelectColor array.getColor(R.styleable.CustomTabLayout_select_color, mSelectColor);mUnSelectColor array.getColor(R.styleable.CustomTabLayout_unselect_color, mUnSelectColor);array.recycle();init();}private void init() {titles new ArrayList();this.addOnTabSelectedListener(new OnTabSelectedListener() {Overridepublic void onTabSelected(Tab tab) {/*** 设置当前选中的Tab为特殊高亮样式。*/if (tab ! null tab.getCustomView() ! null) {TextView tab_layout_text tab.getCustomView().findViewById(R.id.tv_tab_layout);View vIndicator tab.getCustomView().findViewById(R.id.v_indicator);vIndicator.setVisibility(VISIBLE);vIndicator.setBackgroundColor(mSelectColor);tab_layout_text.setTextColor(mSelectColor);}}Overridepublic void onTabUnselected(Tab tab) {/*** 重置所有未选中的Tab颜色、字体、背景恢复常态(未选中状态)。*/if (tab ! null tab.getCustomView() ! null) {TextView tab_layout_text tab.getCustomView().findViewById(R.id.tv_tab_layout);View vIndicator tab.getCustomView().findViewById(R.id.v_indicator);vIndicator.setVisibility(INVISIBLE);tab_layout_text.setTextColor(mUnSelectColor);}}Overridepublic void onTabReselected(Tab tab) {}});}public void setTitle(ListString titles) {this.titles titles;/*** 开始添加切换的Tab。*/for (String title : this.titles) {Tab tab newTab();tab.setCustomView(R.layout.item_custom_tablayout);if (tab.getCustomView() ! null) {TextView text tab.getCustomView().findViewById(R.id.tv_tab_layout);text.setText(title);text.setTextColor(mUnSelectColor);}this.addTab(tab);}}
}相关属性
styleable declare-styleable nameCustomTabLayoutattr nameselect_color formatcolor/attr nameunselect_color formatcolor//declare-styleable
item_custom_tablayout
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalandroid:paddingBottomdimen/dimen_5android:gravitycenter_horizontalTextViewandroid:idid/tv_tab_layoutandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textStyleboldandroid:textColorcolor/c_80ffffffandroid:textSizedimen/textsize_16/Viewandroid:idid/v_indicatorandroid:layout_widthdimen/dimen_30android:layout_heightdimen/dimen_3android:visibilityinvisibleandroid:layout_marginTopdimen/dimen_6android:backgroundcolor/white//LinearLayout 使用方法
ListString titles new ArrayList();
titles.add(待签收);
titles.add(已签收);ListFragment mFragments initFragments();
adapter new ViewPaperAdapter(getSupportFragmentManager(), mFragments, titles);
mViewPager.setAdapter(adapter);mTabLayout.setTitle(titles);//Tablayout自定义view绑定ViewPager
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); 总结
如果对你有所帮助的话不妨 点赞收藏 如果你有什么疑问的话不妨 评论私信 青山不改绿水长流 有缘江湖再见 ~