初步整理 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 继续留在顶部