Android SlidingTabLayout定制分割线和指示条颜色
2018-01-04 00:00
316 查看
Android SlidingTabLayout定制分割线和指示条颜色
Android SlidingTabLayout默认的滑动指示条是系统默认的某个蓝色系色值,分割线是灰色。如果要自定义实现滑动指示条和分割线定制颜色,则主要通过SlidingTabLayout的setCustomTabColorizer()方法实现。
现在给出一个例子加以说明。
(1)首先做一个MainActivity,此MainActivity没有实质意义,只是作为第二步加载要实现SlidingTabLayout Fragment的“容器”。
(2)在一个Fragment实现SlidingTabLayout,然后将此Fragment加载。
测试用的主Activity MainActivity.java :
MainActivity.java需要的布局文件:activity_main.xml:
TabFragment.java代码文件:
TabFragment.java需要的布局文件fragment.xml文件代码:
不要忘了引用Android官方实现的SlidingTabLayout和SlidingTabStrip。
代码层次结构如图所示:
代码运行结果如图所示:
Android SlidingTabLayout定制分割线和指示条颜色
Android SlidingTabLayout默认的滑动指示条是系统默认的某个蓝色系色值,分割线是灰色。如果要自定义实现滑动指示条和分割线定制颜色,则主要通过SlidingTabLayout的setCustomTabColorizer()方法实现。
现在给出一个例子加以说明。
(1)首先做一个MainActivity,此MainActivity没有实质意义,只是作为第二步加载要实现SlidingTabLayout Fragment的“容器”。
(2)在一个Fragment实现SlidingTabLayout,然后将此Fragment加载。
测试用的主Activity MainActivity.java :
package zhangphil.tabs; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); TabFragment fragment = new TabFragment(); transaction.replace(R.id.content_fragment, fragment); transaction.commit(); } } }
MainActivity.java需要的布局文件:activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/content_fragment" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </LinearLayout>
TabFragment.java代码文件:
package zhangphil.tabs; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import zhangphil.view.SlidingTabLayout; public class TabFragment extends Fragment { private static class PagerItem { private final CharSequence mTitle; private final int mIndicatorColor; private final int mDividerColor; public PagerItem(CharSequence title, int indicatorColor, int dividerColor) { mTitle = title; mIndicatorColor = indicatorColor; mDividerColor = dividerColor; } public Fragment createFragment() { return ContentFragment.newInstance(mTitle, mIndicatorColor, mDividerColor); } public CharSequence getTitle() { return mTitle; } public int getIndicatorColor() { return mIndicatorColor; } public int getDividerColor() { return mDividerColor; } } private ArrayList<PagerItem> mTabCards = new ArrayList<PagerItem>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTabCards.add(new PagerItem("Tab A", Color.RED, Color.RED)); mTabCards.add(new PagerItem("Tab B", Color.YELLOW, Color.YELLOW)); mTabCards.add(new PagerItem("Tab C", Color.GREEN, Color.GREEN)); mTabCards.add(new PagerItem("Tab D", Color.TRANSPARENT, Color.TRANSPARENT)); mTabCards.add(new PagerItem("Tab E", Color.CYAN, Color.CYAN)); mTabCards.add(new PagerItem("Tab E", Color.BLACK, Color.BLACK)); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewpager); mViewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager())); SlidingTabLayout mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs); mSlidingTabLayout.setViewPager(mViewPager); mSlidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { @Override public int getIndicatorColor(int position) { return mTabCards.get(position).getIndicatorColor(); } @Override public int getDividerColor(int position) { return mTabCards.get(position).getDividerColor(); } }); } private class MyFragmentPagerAdapter extends FragmentPagerAdapter { MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int pos) { return mTabCards.get(pos).createFragment(); } @Override public int getCount() { return mTabCards.size(); } @Override public CharSequence getPageTitle(int position) { return mTabCards.get(position).getTitle(); } } public static class ContentFragment extends Fragment { private static final String KEY_TITLE = "title"; private static final String KEY_INDICATOR_COLOR = "indicator_color"; private static final String KEY_DIVIDER_COLOR = "divider_color"; public static ContentFragment newInstance(CharSequence title, int indicatorColor, int dividerColor) { Bundle bundle = new Bundle(); bundle.putCharSequence(KEY_TITLE, title); bundle.putInt(KEY_INDICATOR_COLOR, indicatorColor); bundle.putInt(KEY_DIVIDER_COLOR, dividerColor); ContentFragment fragment = new ContentFragment(); fragment.setArguments(bundle); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setGravity(Gravity.CENTER); return tv; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); TextView tv = (TextView) view; Bundle args = getArguments(); String content = ""; if (args != null) { String title = args.getCharSequence(KEY_TITLE) + ""; int indicatorColor = args.getInt(KEY_INDICATOR_COLOR); String indicatorColors = Integer.toHexString(indicatorColor) + ""; int dividerColor = args.getInt(KEY_DIVIDER_COLOR); String dividerColors = Integer.toHexString(dividerColor) + ""; content = content + "标题:" + title + "\n"; content = content + "indicatorColor:" + indicatorColors + "\n"; content = content + "dividerColor:" + dividerColors; } tv.setText(content); } } }
TabFragment.java需要的布局文件fragment.xml文件代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <zhangphil.view.SlidingTabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
不要忘了引用Android官方实现的SlidingTabLayout和SlidingTabStrip。
代码层次结构如图所示:
代码运行结果如图所示:
相关文章推荐
- (转)Android SlidingTabLayout定制分割线和指示条颜色
- (转)Android SlidingTabLayout定制分割线和指示条颜色
- Android SlidingTabLayout定制分割线和指示条颜色
- android SlidingTabLayout实现ViewPager页卡滑动效果
- Android开发之TabLayout真正实现底部导航栏(可实现点击文字颜色图片切换)
- Android Translucent System Bar + actionbarsherlock + SlidingTabLayout 综合实践
- AndroidUI组件SlidingTabLayout实现ViewPager页滑动效果
- 【Android UI】SlidingTabLayout使用小结
- Android SlidingTabLayout的使用--替代ActionBar的Tab导航
- Android---Tablayout自定义Tab的背景和字体的颜色变化
- 谷歌官方Android最新滑动选项导航卡SlidingTabLayout和SlidingTabStrip
- Android之官方导航栏之Toolbar(Toolbar+DrawerLayout+ViewPager+PagerSlidingTabStrip)
- Android进阶UI之SlidingTabLayout实现ViewPager页卡滑动效果
- android SlidingTabLayout实现ViewPager页卡滑动效果
- Android Tablayout + viewpager 切换时修改tablayout title(标题)的字体颜色和字体大小
- SlidingTabLayout在滑动时修改标题字体颜色,也可在滑动时设置滑动条宽度。
- android TabLayout设置标签分割线
- android PagerSlidingTabStrip 文字选中颜色
- android之TabLayout实现PagerSlidingTabStrip,ViewpagerIndicator之类的效果滑动页面导航效果(类似网易新闻)
- Android开发,Design包下TabLayout一些属性修改,字体、下划线颜色