仿今日头条viewpager切换指示器, 商品详情指示器,以及各种很灵活的定制自己需要的样式:
该控件的实现, 引用的是MagicIndicator. 效果图如下:
具体代码效果如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <net.lucode.hackware.magicindicator.MagicIndicator android:id="@+id/magic_indicator" android:layout_width="match_parent" android:layout_height="@dimen/dp_40" android:background="@color/bg_view"/> <View style="@style/separator_line" /> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
MagicIndicator的使用:
mMagicIndicator = (MagicIndicator)findViewById(R.id.magic_indicator); mViewPager = (ViewPager)findViewById(R.id.view_pager); this.goodsId = getIntent().getStringExtra("goodsId"); this.contents = getIntent().getStringExtra("content"); this.position = getIntent().getIntExtra("position" ,0); fragPagerAdapter = new SPProductDetailInnerTabAdapter(getSupportFragmentManager() , goodsId ,contents); mViewPager.setAdapter(fragPagerAdapter); // 当前页不定位到中间 final CommonNavigator commonNavigator = new CommonNavigator(this); commonNavigator.setAdjustMode(true); commonNavigator.setScrollPivotX(0.15f); commonNavigator.setAdapter(new CommonNavigatorAdapter() { @Override public int getCount() { return mDataList == null ? 0 : mDataList.size(); } @Override public IPagerTitleView getTitleView(Context context, final int index) { SimplePagerTitleView simplePagerTitleView = new SimplePagerTitleView(context); simplePagerTitleView.setText(mDataList.get(index)); simplePagerTitleView.setNormalColor(getResources().getColor(R.color.sub_title)); simplePagerTitleView.setSelectedColor(getResources().getColor(R.color.light_red)); simplePagerTitleView.setTextSize(12); simplePagerTitleView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mViewPager.setCurrentItem(index); } }); return simplePagerTitleView; } @Override public IPagerIndicator getIndicator(Context context) { LinePagerIndicator indicator = new LinePagerIndicator(context); indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT); indicator.setYOffset(UIUtil.dip2px(context, 3)); indicator.setColors(getResources().getColor(R.color.light_red)); return indicator; } }); mMagicIndicator.setNavigator(commonNavigator); mMagicIndicator.setDelegate(new SimpleViewPagerDelegate(mViewPager));
这样就可以快速实现一个tab选项卡式效果, 可以很随意自定义自己的样式.
完整Demo下载地址:http://www.tp-shop.cn/article_id_1098.html
相关推荐
此外,还可以添加指示器动画、夜间模式切换等功能。 总结来说,仿新浪微博的TabHost实现涉及布局设计、TabHost初始化、自定义TabWidget样式以及处理每个标签页的逻辑。通过学习这个示例,开发者可以更好地掌握...
TabHost是Android SDK提供的一种布局管理器,它允许开发者在一个Activity中创建多个Tab,每个Tab对应不同的内容区域。这个特效集锦系列旨在通过实例展示如何模仿新浪微博的Tab菜单效果,提升用户界面的交互性和美观...
4. **样式和UI定制**: 要达到仿微信的效果,可能还需要调整`TabHost`和`TabWidget`的样式,比如字体、颜色、图标等。这通常通过设置自定义的主题或者直接修改XML布局文件来实现。 5. **数据加载和更新**: 在每个...
TabLayout是Android Design Support Library的一部分,它提供了一个易于使用的接口来创建可定制的标签指示器。我们首先需要创建一个TabLayout实例,然后将其与ViewPager关联。ViewPager可以管理多个Fragment的滑动...
- 为了提供更丰富的用户体验,可以考虑使用自定义的Tab指示器,例如使用ImageView和TextView组合,或者自定义View来显示Tab的图标和文字。 在实际项目中,可能还需要处理一些额外的细节,比如Tab的点击动画、滑动...
`设置标签指示器,`tabSpec.setContent(intent);`设置点击标签时要启动的Intent。 5. 添加并显示标签:使用`tabHost.addTab(tabSpec);`将标签添加到TabHost,并显示出来。 对于嵌套的TabHost,即“两层TabHost”,...
当我们提到“安卓 TabHost 嵌套 TabHost”,这意味着在一个TabHost内,我们还要再创建一个TabHost,形成一个多层选项卡的结构,以提供更复杂的导航体验。 首先,我们来理解基本的TabHost用法。TabHost通常由两部分...
- `MyAndroidTest_36_MyTabHost_MsgNum` 这个文件名可能表示项目的主要测试类或包名,其中36可能是版本号或序列号,`MyTabHost_MsgNum` 指示这个项目的核心在于自定义的`TabHost`和消息计数功能。 6. **实现细节**...
在Android开发中,"fragment仿微信tabhost"是一个常见的需求,主要是为了实现类似微信应用的主界面布局。在Android 3.0及以上版本,Google引入了Fragment的概念,它允许开发者在单个活动中创建多个可交互的视图区域...
在本示例中,"仿新浪微博的Tabhost"是为了实现一个与新浪微博类似的用户界面,其中包含多个功能模块,每个模块对应一个Tab。这个设计可以使用户在不同的功能之间轻松切换,提升用户体验。 Tabhost主要由两部分组成...
在Android应用开发中,TabHost是一个非常常见的组件,它用于创建多标签的界面,使得用户可以在不同的功能之间轻松切换。本教程将详细讲解如何使用TabHost来实现类似新浪微博底部导航栏的效果。 首先,我们需要理解...
4. 当Tab切换时,让ViewPager跟随切换:监听TabHost的选中事件,如`tabHost.setOnTabChangedListener()`,在监听器中调用ViewPager的`setCurrentItem()`方法。 **源码解析:** 在`ViewPaperTabhostTest`项目中,...
在Android开发中,TabHost是一个重要的组件,用于创建带有可切换标签的用户界面。这篇博客“TabHost两种实现方式”探讨了如何在Android应用中使用TabHost来构建多标签视图。下面我们将深入讨论这两种实现方式及其...
在Android开发中,TabHost是一个重要的组件,它用于创建具有底部导航栏的应用界面,通常包含多个Tab,每个Tab对应一个不同的活动(Activity)或者视图(View)。本篇文章将深入探讨TabHost的各种实现方式,帮助...
在Android开发中,`TabHost`是一个非常重要的组件,它用于创建具有标签栏的界面,让用户可以通过不同的标签在多个视图之间切换。`TabHost`是Android提供的一个容器,可以容纳多个`TabWidget`(标签)和一个`...
很长一段时间没有上传资源了,最近觉得微信的主界面滑动很好用,研究了下,秉着开源...主要有 TabHost + Fragment 来实现。 当然,另一种实现方式是 ViewGroup + ViewPager,异曲同工,不过我这里没有采用这种方式。
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签可以展示不同的内容或活动(Activity)。本教程将详细介绍如何使用TabHost,特别适合初学者和教学场景,例如构建一个模拟...
在Android开发中,"tabhost activity slidingMenu仿新浪微博布局.zip"是一个典型的移动应用界面设计案例,它结合了TabHost和SlidingMenu组件来模仿新浪微博的用户界面。这个小框架展示了如何构建一个具有底部标签...
3. 自定义指示器:除了使用已有的指示器库,开发者也可以根据需求自定义指示器。这可以通过继承ViewGroup,然后重写onDraw()方法来绘制所需的指示器样式。自定义指示器可以更好地适应项目的视觉风格,但需要更多代码...
在Android开发中,TabHost是实现标签栏切换界面的一个重要组件。TabHost允许开发者创建一个包含多个Tab的界面,每个Tab都可以关联到不同的活动(Activity)或者帧布局(FrameLayout)。下面将详细介绍TabHost的使用...