22.Android 十分方便的滑动标签页

22.Android 十分方便的滑动标签页

  • Android 十分方便的滑动标签页

    • 前言
    • EasySlidingTabs属性
    • EasySlidingTabs布局
    • FragmentPagerAdapter
    • EasySlidingTabs设置Tab背景
    • Github传送门
    • 效果图

前言

其实滑动标签页是很常见的,网上搜也是一大堆。但是好用、简单、少bug、可扩展的库实在不多。很多想在做滑动标签页的时候也是经常想到各种不靠谱的库,虽然不难,但是容易坑自己。

原三星底层App大神JiangEcho提供技术支持


EasySlidingTabs属性

这些属性的名字都是很简单的英文,不难!

    <declare-styleable name="EasySlidingTabs">
        <attr name="easyIndicatorColor" format="color" />
        <attr name="easyUnderlineColor" format="color" />
        <attr name="easyTabTextColor" format="color" />
        <attr name="easySelectedTagTextColor" format="color" />
        <attr name="easyDividerColor" format="color" />
        <attr name="easyIndicatorHeight" format="dimension" />
        <attr name="easyUnderlineHeight" format="dimension" />
        <attr name="easyDividerPadding" format="dimension" />
        <attr name="easyTabPaddingLeftRight" format="dimension" />
        <attr name="easyTabBackground" format="reference" />
        <attr name="easyScrollOffset" format="dimension" />
        <attr name="easyShouldExpand" format="boolean" />
        <attr name="easyTextAllCaps" format="boolean" />
        <attr name="easyIndicatorDrawable" format="reference" />
    </declare-styleable>

EasySlidingTabs布局

真的十分简单 > . < 。

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <com.camnter.easyslidingtabs.widget.EasySlidingTabs
        android:id="@+id/easy_sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:easyIndicatorColor="#ff57C1CC"
        app:easyUnderlineColor="#ffdddddd"
        app:easyTabTextColor="#ffFF4081"
        app:easySelectedTagTextColor="#ff57C1CC"
        android:paddingBottom="16dp"
        android:paddingTop="16dp" />

    <android.support.v4.view.ViewPager
        android:id="@+id/easy_vp"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

</LinearLayout>

FragmentPagerAdapter

public class TabsFragmentAdapter extends FragmentPagerAdapter implements EasySlidingTabs.TabsTitleInterface {

    private String[] titles;
    private List<Fragment> fragments;
    public TabsFragmentAdapter(FragmentManager fm, String[] titles, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
        this.titles = titles;
    }

    @Override
    public SpannableString getTabTitle(int position) {
        CharSequence title = this.getPageTitle(position);
        if (TextUtils.isEmpty(title)) return new SpannableString("");
        SpannableString spannableString = new SpannableString(title);
        return spannableString;
    }

    /**
     * This method may be called by the ViewPager to obtain a title string
     * to describe the specified page. This method may return null
     * indicating no title for this page. The default implementation returns
     * null.
     *
     * @param position The position of the title requested
     * @return A title for the requested page
     */
    @Override
    public CharSequence getPageTitle(int position) {
        if (position < titles.length) {
            return titles[position];
        } else {
            return "";
        }
    }

    /**
     * Return the Fragment associated with a specified position.
     *
     * @param position
     */
    @Override
    public Fragment getItem(int position) {
        Fragment fragment = this.fragments.get(position);
        if (fragment != null) {
            return this.fragments.get(position);
        } else {
            return null;
        }
    }

    @Override
    public int getTabDrawableBottom(int position) {
        return 0;
    }

    @Override
    public int getTabDrawableLeft(int position) {
        return 0;
    }

    @Override
    public int getTabDrawableRight(int position) {
        return 0;
    }

    @Override
    public int getTabDrawableTop(int position) {
        return 0;
    }

    /**
     * Return the number of views available.
     */
    @Override
    public int getCount() {
        return this.fragments.size();
    }

}

EasySlidingTabs设置Tab背景

easyslidingtabs模块下的bg_easy_sliding_tabs.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime">
    <item android:state_pressed="true" android:drawable="@color/bg_easy_sliding_tabs_pressed" />
    <item android:state_focused="true" android:drawable="@color/bg_easy_sliding_tabs_pressed" />
    <item android:drawable="@android:color/transparent" />
</selector>

在这修改背景色!!


Github传送门

EasySlidingTabs


效果图

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 16:30:30

22.Android 十分方便的滑动标签页的相关文章

Android Viewpager+Fragment实现滑动标签页

ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="mat

android开发步步为营之53:viewpager+fragment构造可左右滑动标签页效果

可滑动的标签页是很多应用的用来做外面框架的,比如微信,微博等等,我这里实现的效果是下面是主标签页,然后中间一个的标签页里面又可以继续左右滑动,等于是标签页内部再嵌套标签页,用到的组件主要有:用于滑动效果的viewpager,以及用于实现每个tab页功能的fragment,先看看效果图:  第一步:设计页面activity_learn_fragment.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/

ViewPager + Fragment实现滑动标签页

ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:

android ViewPager左右滑动翻页,并可以删除page

首先新建一个Activity,继承FragmentActivity. 初始化一个Fragment的List集合,用于像FragmentStatePagerAdapter填充数据,而ViewPager由FragmentStatePagerAdapter的实例进行初始化.和ListView一样,Fragment的List集合的数据变了,就通知FragmentStatePagerAdapter进行界面刷新. ArrayList<Fragment> fragments =new ArrayList&l

【Android界面实现】使用ScrollingTabsView实现有滑动标签的ViewPager效果

转载自:http://blog.csdn.net/zhaokaiqiang1992/article/details/40378285 在前面的文章中,我们使用支持包里面的PagerTabStrip实现了有滑动标签的viewPager效果,今天,再给大家介绍另外一种开源项目,来实现类似的效果. 在这篇文章中,我们将使用第三方开源项目ViewPagerExtensions实现. 先看效果 ViewPagerExtensions的github地址:https://github.com/astuetz/

Android 快速实现 ViewPager 滑动页卡切换(可用作整个 app上导航)

我记得在前面,我写了一篇Android 微信6.1 tab栏图标和字体颜色渐变的实现,如果大家仅仅认为这篇文章的功能只是模仿微信颜色渐变效果,那就大错特错了!认真阅读了这篇文章的朋友,应该知道,这里面代码可用作 app 通用的底部栏导航,通过它能快速的实现类似微信6.0版本以底部导航的 app 整体架构,并且在 MainActivity 中需要编写的代码非常简洁.如果有兴趣的朋友可以去看看. 效果: 今天这篇 blog的内容同样可以拿来做 app 的整体架构,但与前面那篇 blog 不同,不同之

【Android】标签页、计时器、单选按钮、复选按钮

写一个小程序把安卓程序中的几个基础组件的基本用法串联起来. 如下图所示: 在安卓程序中,一个计时器,一直在不断地计时,每10秒弹出一个提示. MainActivity被一个标签页分成两部分,一部分,有单选按钮与复选按钮,最后有一个提交按钮, 结果在另一个标签页中显示. 用这个程序来说明安卓中标签页.计时器.单选按钮.复选按钮的用法. 首先贴上res\values\string.xml中,各个组件的字符串. <?xml version="1.0" encoding="ut

jquery插件之tab标签页或滑动门

该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的tab标签页或滑动门特效,在此插件中默认使用的是鼠标滑过事件,您也可以根据自己的实际需求将滑过事件hover改为点击事件click.整体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

android 标签页&lt;include /&gt; 的使用

在android页面布局设计中,有时候需要用到很多相同的布局设计.如果每个用到该布局的xml里都写那个相同布局的话,会造成语句冗余,而且可读性很差. 为了解决这个问题的话,我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过<include /> 标签来重用layout代码. 具体实现: 在xml需要使用 某个相同的布局模块的时候直接使用<include /> 标签页进行引用. 大致需要那个相同布局模块的id 和res/layout/ 内xml 名字: 由上图可知一共使