Giter Club home page Giter Club logo

scroable's Introduction

展示

在这里插入图片描述

引入

Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Add the dependency

dependencies {
	 implementation 'com.github.ailiwean:Scroable:Tag'
 }

使用

简单方便,两步集成

step1

     <com.scroable.ScroTabView
        android:layout_width="match_parent"
        android:layout_height="70dp"
    />

    <com.scroable.ScroableView
        android:id="@+id/scroable"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">


            <!--标题可以存在多个嵌套-->
            <TextView
                android:id="@+id/title1"
                android:layout_width="match_parent"
                android:layout_height="50dp" />


            <!--具体内容-->
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp" />
        
            
            ......

        </LinearLayout>

    </com.scroable.ScroableView>

ScroTabView是默认提供的一个TabLayout.源于FlycoTabLayout修改与Scroable组合使用更方便。

ScroableView是一个ScrollView,遵循ScrollView写法即可。 这里无非就是提供头View,头View必须属于TextView或其子类。 多层嵌套也无妨。

step2

 scroableView.bindTitleView(R.id.title1, R.id.title2, R.id.title3, R.id.title4, R.id.title5, R.id.title6)
                .bindScroTabView(scroTabView)
                .go();

这里绑定头部TextView,ScroTabView即可。

自由组合 可以搭配其他TabLayout使用

        scroTabView.setOnTabSelectListener(new OnTabSelectListener() {
            @Override
            public void onTabSelect(int position) {
                scroableView.scrollToPosition(position);
            }

            @Override
            public void onTabReselect(int position) {
            }
        });
        scroableView.bindTitleView(R.id.title1, R.id.title2, R.id.title3, R.id.title4, R.id.title5, R.id.title6)
                .registerDataCallback(new ScroableView.TitleDataCallback() {
                    @Override
                    public void titlesBack(String[] titles) {
                        scroTabView.setTabsStr(titles);
                    }
                })
                .registerScrollListener(new ScroableView.ScrollToItemListener() {
                    @Override
                    public void scrollToItem(int position, String title) {
                        scroTabView.setCurrentTab(position);
                    }
                })
                .go();

自由搭配的处理逻辑,registerDataCallback获取数据只会调用一次用于添加TabLayout,registerScrollListener滑到下一个Tab会回调一次用于切换TabLayout。

其他

ScroTabView样式

在这里插入图片描述

Attributes
name format description
tl_indicator_color color 设置显示器颜色
tl_indicator_height dimension 设置显示器高度
tl_indicator_width dimension 设置显示器固定宽度
tl_indicator_margin_left dimension 设置显示器margin,当indicator_width大于0,无效
tl_indicator_margin_top dimension 设置显示器margin,当indicator_width大于0,无效
tl_indicator_margin_right dimension 设置显示器margin,当indicator_width大于0,无效
tl_indicator_margin_bottom dimension 设置显示器margin,当indicator_width大于0,无效
tl_indicator_corner_radius dimension 设置显示器圆角弧度
tl_indicator_gravity enum 设置显示器上方(TOP)还是下方(BOTTOM),只对常规显示器有用
tl_indicator_style enum 设置显示器为常规(NORMAL)或三角形(TRIANGLE)或背景色块(BLOCK)
tl_underline_color color 设置下划线颜色
tl_underline_height dimension 设置下划线高度
tl_underline_gravity enum 设置下划线上方(TOP)还是下方(BOTTOM)
tl_divider_color color 设置分割线颜色
tl_divider_width dimension 设置分割线宽度
tl_divider_padding dimension 设置分割线的paddingTop和paddingBottom
tl_tab_padding dimension 设置tab的paddingLeft和paddingRight
tl_tab_space_equal boolean 设置tab大小等分
tl_tab_width dimension 设置tab固定大小
tl_textsize dimension 设置字体大小
tl_textSelectColor color 设置字体选中颜色
tl_textUnselectColor color 设置字体未选中颜色
tl_textBold boolean 设置字体加粗
tl_iconWidth dimension 设置icon宽度(仅支持CommonTabLayout)
tl_iconHeight dimension 设置icon高度(仅支持CommonTabLayout)
tl_iconVisible boolean 设置icon是否可见(仅支持CommonTabLayout)
tl_iconGravity enum 设置icon显示位置,对应Gravity中常量值,左上右下(仅支持CommonTabLayout)
tl_iconMargin dimension 设置icon与文字间距(仅支持CommonTabLayout)
tl_indicator_anim_enable boolean 设置显示器支持动画(only for CommonTabLayout)
tl_indicator_anim_duration integer 设置显示器动画时间(only for CommonTabLayout)
tl_indicator_bounce_enable boolean 设置显示器支持动画回弹效果(only for CommonTabLayout)
tl_indicator_width_equal_title boolean 设置显示器与标题一样长(only for SlidingTabLayout)

支持

咖啡什么的根本不重要, 如果能帮到您, 笔者希望能得到一个大大的star鼓励一下,谢谢,谢谢,谢谢!

scroable's People

Contributors

ailiwean avatar

Stargazers

RenzhiMax avatar Jayant Lohani avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.