2019独角兽企业重金招聘Python工程师标准>>>

Google官方推出了许多扩展的UI公共组件库,在这里,我们介绍一个比较实用的组件SlidingTabLayout,效果图如下:

<img src="http://fyales.qiniudn.com/Screenshot_2015-04-09-10-40-04.png" style="width:50%;height=50%"/>

另外网易新闻的栏目展示用的也是类似的组件。

用法

首先将该组件的源代码拷贝到你的项目中,SlidingTabLayout.java和SlidingTabStrip.java,项目地址。

接下来就可以在MainActivity里面进行布局了:

<?xml version="1.0" encoding="utf-8"?><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"tools:context=".MainActivity"><com.fyales.slidetablayout.SlidingTabLayoutandroid:id="@+id/sliding_tabs"android:layout_width="match_parent"android:layout_height="wrap_content" /><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="0px"android:layout_weight="1"android:background="@android:color/white" /></LinearLayout>

然后,写一个基本的Fragment,用于展示:

package com.fyales.slidetablayout;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/*** @author fyales*/public class BaseFragment extends Fragment {private static final String DATA = "data";@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment,container,false);TextView textView = (TextView)view.findViewById(R.id.text);textView.setText("Fragment#" + getArguments().getInt(DATA,0));return textView;}@Overridepublic void onViewCreated(View view, Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);}public static Fragment newInstance(int type){Fragment fragment = new BaseFragment();Bundle bundle = new Bundle();bundle.putInt(DATA,type);fragment.setArguments(bundle);return fragment;}}

定义Adapter(继承自FragmentPagerAdapter),覆写getItem()方法

package com.fyales.slidetablayout;import android.content.Context;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;/*** @author fyales*/public class TabViewPagerAdapter extends FragmentPagerAdapter {private final int PAGE_COUNT = 3;private String mTabTitle[] = new String[]{"朝代","人物","战争"};private Context mContext;public TabViewPagerAdapter(FragmentManager fm, Context context) {super(fm);this.mContext = context;}@Overridepublic Fragment getItem(int position) {return BaseFragment.newInstance(position);}@Overridepublic int getCount() {return PAGE_COUNT;}@Overridepublic CharSequence getPageTitle(int position) {return  mTabTitle[position];}}

最后我们就可以在MainActivity.java中直接使用了

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);viewPager.setAdapter(new TabViewPagerAdapter(getSupportFragmentManager(),MainActivity.this));SlidingTabLayout slidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);// slidingTabLayout.setDistributeEvenly(true); 是否填充满屏幕的宽度slidingTabLayout.setViewPager(viewPager);}

自定义样式和自定义下划线颜色

SlidingTabLayout同样有一些自定义的方法供你使用,你可以定义下划线的颜色或者自定义样式,通过以下方法调用

//自定义下划线颜色slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer(){@Overridepublic int getIndicatorColor(int position) {return Color.RED;}});//自定义展示样式slidingTabLayout.setCustomTabView(R.layout.your_custom_tab, 0);

项目Demo地址。

转载于:https://my.oschina.net/weiCloudS/blog/397775

谷歌官方扩展UI组件---SlideTabLayout相关推荐

  1. UI组件库的引用方式

    一.引入组件库: 引入官方组件库有两种方式,分别是:通过npm下载依赖项到本地,以及在 app.json 中设置 useExtendedLib: { "weui": true}. ...

  2. 小程序子组件向父组件传值_一套组件化、可复用、易扩展的微信小程序 UI 组件库...

    如何使用 Wux Weapp 是一套组件化.可复用.易扩展的微信小程序 UI 组件库.在开始使用之前,需要先阅读微信小程序自定义组件的相关文档. 通过 npm 安装,需要依赖小程序基础库 2.2.1 ...

  3. WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择

    微信早年发布的 UI 框架,对想要创建让微信用户感到熟悉的应用来说,是一个好选择. 关于 WeUI WeUI 一款由腾讯微信团队开发的 UI 组件库,是一套同微信原生视觉体验一致的基础样式库,由微信官 ...

  4. Android官方开发文档Training系列课程中文版:Activity测试之UI组件测试

    原文地址:http://android.xsoftlab.net/training/activity-testing/activity-ui-testing.html 一般来说,正因为Activity ...

  5. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)...

    Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...

  6. 谷歌的android下拉刷新页面,Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新

     <Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新> 下拉刷新在如今移动开发中应用如此广泛和普遍,以至于谷歌干脆在SDK中给予支持.在android ...

  7. Android开源介绍-UI组件

    终端的开发,UI的重要性不言而喻,如何快速开发出优雅漂亮的UI,android的一些开源UI组件,提供了很好的参考. 参考: oschina Android UI组件  最火的Android开源项目( ...

  8. 如何使用Vue集成其它UI组件?如何阅读UI官网?移动端组件Vant实例教程(熬夜干货)

    如何使用Vue集成其它UI组件 前言 一.Vant是什么? 二.基础环境准备 1.1 了解是根本 1.2 安装 1.3 引入组件 3.1 步骤一 3.2 步骤二 3.3 步骤三 二.事件绑定 2.1 ...

  9. 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐

    本文完整版:<最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐> Vue 移动端 UI 组件库推荐 Vant 3 - 有赞移动 UI 组件库,支持 Vue 3 微信小程序 ...

最新文章

  1. Elixir: 开发和发布Elixir库
  2. leetcode 104. Maximum Depth of Binary Tree
  3. 清理offset_关于 kafka 日志清理策略的问题
  4. ffplay.c函数结构简单分析(画图)
  5. 【语音识别】基于matlab MFCC+IPC特征+SVM中英语种识别【含Matlab源码 612期】
  6. CentOS 7完全卸载MySQL
  7. X96 MAX变砖后usb烧录修复(by quqi99)
  8. 面试技巧——程序员简历模板
  9. 8.4 不能外包的解谜算法
  10. 自定义view绘制太极图案
  11. S5P4418 Android实时时钟框架介绍
  12. Intel处理器 天梯图
  13. c#(WinForm)绘制两个圆的内公切线
  14. Linux中级(七)SAMBA文件服务器
  15. 事务隔离级别与事务传播行为简介
  16. 剪辑视频怎么加音效 视频音效常用都有哪些类型
  17. 内网渗透----Windows下信息收集
  18. miui8.5开发者选项USB调试模式
  19. 群晖中安装Firefly记账软件,使用安卓客户端登录
  20. 通过js实现金字塔(星号金字塔,回文对称数字金字塔)

热门文章

  1. MySQL分库分表使用Snowflake全局ID生成器(3rd)
  2. (asp.net)百度浏览器Cookie的神奇bug
  3. NTT DOCOMO将部署多供应商NFV技术
  4. MySQL数据库多种安装方法及企业级安装实践
  5. 用InstallShield 打包工具 打 Win32 程序 (depends.exe 用看程序都依赖了哪些dll)
  6. ubuntu访问win7
  7. Node.js项目实践:构建可扩展的Web应用
  8. solrlucene3.6.0源码解析(三)
  9. 2012体感发展加速,微软再添新对手
  10. 一段关于低价的对话(被低价困扰的安利伙伴进!)