Theme
1 | <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> |
##TextInputLayout
XML文件
1 | <android.support.design.widget.TextInputLayout |
代码显示错误信息,文本颜色的需要使用Theme修改
1 | TextInputLayout tily1=(TextInputLayout) findViewById(R.id.tily1); |
SnackBar
代码
1 | Snackbar snackbar = Snackbar.make(view, "SnackBar测试", Snackbar.LENGTH_SHORT) |
FloatingActionButton
1 | <android.support.design.widget.FloatingActionButton |
属性
- //上面的文件使用相对布局,可以使用相对锚点的设置定位fab
- app:layout_anchor=”@id/md_recyclerview”//锚点,基于哪个控件定位
- app:layout_anchorGravity=”bottom|right|end”//相对锚点的位置
- app:fabSize=”normal”//控件大小,只支持两种大小,mini,normal
- app:backgroundTint=”#f00”//改变背景颜色,不设置好像是黑的还是跟随主题
- app:elevation=”5dp”//阴影
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## AppBarLayout
- AppBarLayout本身是一个垂直的LinearLayout,被他包裹的控件将作为ActionBar展示
```xml
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"
>
<android.support.v7.widget.Toolbar
android:id="@+id/md_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_marginBottom="20dp">
</android.support.v7.widget.Toolbar>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="这是appbarlayout测试"
android:gravity="center_horizontal"
android:textSize="20sp"
/>
</android.support.design.widget.AppBarLayout>
CoordinatorLayout
- 这个(Coordinator)单词的意思是协调器,它是协调控件之间动画效果的一个布局
1 | <android.support.design.widget.CoordinatorLayout |
app:layout_behavior=”@string/appbar_scrolling_view_behavior”//在视图中可滑动的组件使用该属性标示,必须是RecyclerView或NestedScrollView
试验表明,开始使用后面两个属性并没起作用,后来发现需要固定toolbar高度才会起作用。
FloatingActionButton被包裹在CoordinatorLayout中时可以防止SnackBar跳出时遮挡Fab
app:layout_scrollFlags=”scroll|enterAlways”//三种取值
属性选择 | 描述 |
---|---|
scroll |
所有需要滑动的视图需要定义该属性,不使用该属性的视图将会固定在屏幕顶端this flag should be set for all views that want to scroll off the screen - for views that do not use this flag, they’ll remain pinned to the top of the screen |
enterAlways |
任意向下的操作会导致隐藏视图显示出来this flag ensures that any downward scroll will cause this view to become visible, enabling the ‘quick return’ pattern |
enterAlwaysCollapsed |
这个flag定义的是何时进入(已经消失之后何时再次显示)。假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完。When your view has declared a minHeight and you use this flag, your View will only enter at its minimum height (i.e., ‘collapsed’), only re-expanding to its full height when the scrolling view has reached it’s top. |
exitUntilCollapsed |
这个flag时定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。 this flag causes the view to scroll off until it is ‘collapsed’ (its minHeight) before exiting |
CollapsingToolbarLayout
- 使用CollapsingToolbarLayout结合CoordinatorLayout实现可缩放的ActionBar,在使用CoordinatorLayout一直实现不了列表滑动到顶端才显示的效果,使用CollapsingToolbarLayout可以实现
1 | <android.support.design.widget.CoordinatorLayout |
- AppBarLayout高度需要固定
- CollapsingToolbarLayout设置app:layout_scrollFlags
1 | - 23.1.0以后新增一个snap可以在拉动到底部时产生缩放效果 |
一些属性
setTitle(CharSequence)
//设置固定在顶端时显示的titlesetContentScrim(Drawable)
app:contentScrim=”?attr/colorPrimary”
//修改固定在顶端的背景颜色setStatusBarScrim(Drawable)
//状态栏背景,5.0以上有效app:layout_collapseParallaxMultiplier=”0.6”
//滑动的视觉差,产生的效果是提前将折叠的视图隐藏掉了app:layout_collapseMode=”parallax|pin”
//滑动模式,缩放或者固定collapsingToolbarLayout.setTitle("title");
//设置标题,将会自动进行缩放
//设置颜色后将会自动进行颜色过渡collapsingToolbarLayout.setExpandedTitleColor(Color.WHITE);
collapsingToolbarLayout.setCollapsedTitleTextColor(Color.GREEN);
DrawerLayout+NavigationView
- 结合之前学的总结在一个布局中,首先DrawerLayout需要有两个子view,上面的一个代表content,下面的NavigationView代表菜单导航,当然你可以替换成自己的布局,用来做其他的事情。
1 | <android.support.v4.widget.DrawerLayout |
几个属性
1 | 关于NavigationView中item的字体颜色和icon选中状态颜色是去当前主题theme中的 |
代码
1 | mDrawerLayout = (DrawerLayout) findViewById(R.id.md_DrawerLayout); |