Android 6.0 新特性

初步整理 Android 6.0 新控件 参考 tianzhu2725

TextInputLayout

高级炫酷带有提示的输入框,相当于输入框中的战斗框
使用需要依赖 design 类库:

compile 'com.android.support:design:23.0.0+'

使用步骤:

先在 TextInputLayout 中包裹一个 EditText,然后给 EditText 添加文本变化监听器:

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        if(s.length() > 5){
            //设置错误提示信息
            inputLayout.setError("不能超过5个");
            //启用错误提示
            inputLayout.setErrorEnabled(true);
        }else{
            //关闭错误提示
            inputLayout.setErrorEnabled(false);
        }
    }
});

FloatingActionButton

总是能悬浮在界面上的 Button,可以设置点击事件
使用需要依赖 design 类库:

compile 'com.android.support:design:23.0.0+'

可以设置以下属性:

app:fabSize="normal"//2个取值,normal=56dp,mini=48dp
app:elevation="10dp"//高度
app:rippleColor="#0000ff"//按下水波纹颜色
app:pressedTranslationZ="20dp"//按下Z轴移动距离  

注意:设置 android:clickable="true" 才有按下的效果

Snackbar

一个介于 Toast 和 Dialog 之间的和用户交互的控件,显示在界面底部,并且可以设置点击行为,也可以滑动出去
在和 FloatingActionButton 一起使用时,需要让 CoordinatorLayout 作为父布局才能使FloatingActionButton 给 SnackBar 腾出空间

TabLayout

相当于 ViewPagerIndicator 的指示器效果,一般用来跟 ViewPager 结合使用
使用需要依赖design类库:

compile 'com.android.support:design:23.0.0+'

单独使用 TabLayout 的步骤:
先添加 Tab,使用 tabLayout.newTab()方法创建 Tab:

//1.添加Tab
tabLayout.addTab(tabLayout.newTab().setText("Tab1"));

给 tabLayout 设置 tab 改变的监听器:

//2.给 tabLayout 添加 tab 改变的监听器
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        Log.e("TAG", "onTabSelected: "+tab.getText());
    }
    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
    }
    @Override
    public void onTabReselected(TabLayout.Tab tab) {
    }
});

在 xml 中给 TabLayout 设置属性:

app:tabIndicatorColor="#00f"//横线颜色
app:tabSelectedTextColor="#f00"//选中字体颜色
app:tabTextColor="#0f0"//默认字体颜色
app:tabMode="fixed"//fixed:不能滑动,每个Tab平分宽度,scrollable:可以滑动tab,每个tab宽度很小,适用于tab很多的情景
app:tabGravity="fill"//fill:平分宽度,center:让tab居中,如果tabMode是scrollable,那tabGravity会被忽略

和 ViewPager 关联使用步骤:

先给 ViewPager 填充数据,然后关联 TabLayout 和 ViewPager:

//给ViewPager填充数据
viewpager.setAdapter(new MyAdapter());
//关联TabLayout和ViewPager
tabLayout.setupWithViewPager(viewpager);

需要注意的是,ViewPager 的 adapter 的 getPageTitle() 方法的返回值将会设置给 Tab 的标题

CoordinatorLayout

协调布局,能够协调多个布局的位置关系,可以实现让 FAB 上下滑动,展开或折叠 ToolBar,控制View 扩展收缩以及放大缩小

使用需要依赖 design 类库:

compile 'com.android.support:design:23.0.0+'

使用它结合 AppBarLayout 实现向上滑动隐藏 ToolBar 的效果:

AppBarLayout 会将包裹的所有子 View 作为一个整体的 AppBar,有着统一的界面着色;
app:layout_scrollFlags 属性介绍:
scroll:表示该 View 可以被滑动出 CoordinatorLayout 的范围,所有想滚动出屏幕的 view 都需要设置这个 flag, 没有设置这个 flag 的 view 将被固定在屏幕顶部。例如,TabLayout 没有设置这个值,将会停留在屏幕顶部

enterAlways:表示任意向下的滚动都会导致该 View 可见
exitUntilCollapsed:滚动退出屏幕,最后折叠在顶端
enterAlwaysCollapsed:当你的视图已经设置 minHeight 属性又使用此标志时,你的视图只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度

给想滑动出范围的 View 设置属性,比如 ToolBar:

app:layout_scrollFlags=”scroll|enterAlways

给发出滑动行为的View设置属性,比如 ViewPager:

app:layout_behavior="@string/appbar_scrolling_view_behavior"

实现步骤:

1.CoordinatorLayout 作根控件,包裹 AppBarLayout 和可滚动的控件,比如 ViewPager
2.AppBarLayout 包裹 ToolBar 及TabLayout,
ToolBar 要滑动,给其设置 app:layout_scrollFlags
3.ViewPager 是发出滑动行为的控件,设置属性 app:layout_behavior
注意:带 layout_scrollFlags 的 view 需要放在固定 View 的前面,这样滑动的 view 才能够正常退出,而固定的 view 继续留在顶部

坚持原创技术分享,您的支持将鼓励我继续创作!