AppBarLayout+ToolBar+CollapsingToolbarLayout+NestedScrollView
2017-05-27 15:16
459 查看
AppBarLayout:
AppBarLayout是继承LinearLayout的子类,根据名称可以知道它是AppBar的容器。
AppBarLayout需要注意几点:
让子View可以选择自己的滑动的方式。
需要依赖CoordinatorLayout作为父容器,同时也要求一个具有可以独立滚动的兄弟节点(或兄弟节点的子view可以滚动)才能发挥其功能。
AppBarLayout一般经常与ToolBar和CollapsingToolbarLayout一起使用。
ToolBar:
ToolBar是android 与Android 5.0开始推出的Material Design风格的导航控件,用来取代ActionBar。tionBar相比,Toolbar明显灵活多了,它不像ActionBar一样固定在Activity的顶部,而是可以放在界面的任意地方。并且ToolBar可以有很多定制的余地,定制的属性在API文档中都有详细的介绍。
设置导航图标、app的logo、主标题和子标题:
也可以通过在布局文件中设置:
注意:设置这些图片的时候,使用在根布局中加入自定义属性的命名空间
然后再布局中使用这些命名空间。
设置Actionmenu:
效果图:
base_toolbar_menu:
函数中:
如果想要修改弹出框的背景色和字体的颜色的话:
然后再布局文件中引用:
效果图:
注意:
网上看到说,将overlapanchor设置成false之后,弹出框会显示在toolbar的下面,但是我这里却没有这种能够效果,也不知道什么原因?
CollapsingToolbarLayout:
CollapsingToolbarLayout包裹 Toolbar 的时候提供一个可折叠的 Toolbar,一般作为AppbarLayout的子视图使用。
NestedScrollView:
它是support-v4包提供的控件,继承至FrameLayout, 并实现了NestedScrollingParent,NestedScrollingChild, ScrollingView接口。它的作用类似于Android.widget.ScrollView,不同点在于NestedScrollView支持嵌套滑动。
AppBarLayout是继承LinearLayout的子类,根据名称可以知道它是AppBar的容器。
AppBarLayout需要注意几点:
让子View可以选择自己的滑动的方式。
需要依赖CoordinatorLayout作为父容器,同时也要求一个具有可以独立滚动的兄弟节点(或兄弟节点的子view可以滚动)才能发挥其功能。
AppBarLayout一般经常与ToolBar和CollapsingToolbarLayout一起使用。
ToolBar:
ToolBar是android 与Android 5.0开始推出的Material Design风格的导航控件,用来取代ActionBar。tionBar相比,Toolbar明显灵活多了,它不像ActionBar一样固定在Activity的顶部,而是可以放在界面的任意地方。并且ToolBar可以有很多定制的余地,定制的属性在API文档中都有详细的介绍。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_tool_bar_app_bar" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/PoPupMenu"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="控件"/> </android.support.v7.widget.Toolbar> </LinearLayout>
设置导航图标、app的logo、主标题和子标题:
//设置导航图标 mToolbar.setNavigationIcon(R.mipmap.ic_drawer_home); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mActivity, "导航图标", Toast.LENGTH_SHORT).show(); } }); //设置logo mToolbar.setLogo(R.mipmap.ic_launcher); //设置主标题 mToolbar.setTitle("Title"); mToolbar.setTitleTextColor(Color.WHITE); //设置子标题 mToolbar.setSubtitle("subTitle");
也可以通过在布局文件中设置:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_tool_bar_app_bar" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:navigationIcon="@mipmap/ic_drawer_home" app:logo="@mipmap/ic_launcher" app:title="title" app:titleTextColor="@android:color/white" app:subtitle="subtitle" app:popupTheme="@style/PoPupMenu"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="控件"/> </android.support.v7.widget.Toolbar> </LinearLayout>
注意:设置这些图片的时候,使用在根布局中加入自定义属性的命名空间
< 4000 code>xmlns:app="http://schemas.android.com/apk/res-auto"
然后再布局中使用这些命名空间。
设置Actionmenu:
效果图:
base_toolbar_menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@id/action_search" android:icon="@mipmap/ic_search_white_24dp" android:title="@string/menu_search" app:showAsAction="ifRoom" /> <item android:id="@id/action_notification" android:icon="@mipmap/ic_notifications" android:title="@string/menu_notifications" app:showAsAction="ifRoom" /> <item android:id="@+id/action_item1" android:title="@string/item_01" app:showAsAction="never" /> <item android:id="@+id/action_item2" android:title="@string/item_02" app:showAsAction="never" /> </menu> //showAsAction这个属性的值有: //1、always:使菜单项一直显示在ToolBar上。 //2、ifRoom:如果有足够的空间,这个值会使菜单项显示在ToolBar上。 //3、never:使菜单项永远都不出现在ToolBar上,在…的子项中显示。 //4、withText:使菜单项和它的图标,菜单文本一起显示。
函数中:
mToolbar.inflateMenu(R.menu.base_toolbar_menu); mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.action_search: Toast.makeText(mActivity, "搜索", Toast.LENGTH_SHORT).show(); break; case R.id.action_notification: Toast.makeText(mActivity, "通知", Toast.LENGTH_SHORT).show(); break; case R.id.action_item1: Toast.makeText(mActivity, "item1", Toast.LENGTH_SHORT).show(); break; case R.id.action_item2: Toast.makeText(mActivity, "item2", Toast.LENGTH_SHORT).show(); break; default:break; } return false; } });
如果想要修改弹出框的背景色和字体的颜色的话:
<style name="PoPupMenu" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:colorBackground">@color/colorAccent</item> <item name="android:textColor">@android:color/white</item> <item name="android:overlapAnchor">false</item> </style>
然后再布局文件中引用:
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:navigationIcon="@mipmap/ic_drawer_home" app:logo="@mipmap/ic_launcher" app:title="title" app:titleTextColor="@android:color/white" app:subtitle="subtitle" app:popupTheme="@style/PoPupMenu" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="控件"/> </android.support.v7.widget.Toolbar>
效果图:
注意:
网上看到说,将overlapanchor设置成false之后,弹出框会显示在toolbar的下面,但是我这里却没有这种能够效果,也不知道什么原因?
CollapsingToolbarLayout:
CollapsingToolbarLayout包裹 Toolbar 的时候提供一个可折叠的 Toolbar,一般作为AppbarLayout的子视图使用。
NestedScrollView:
它是support-v4包提供的控件,继承至FrameLayout, 并实现了NestedScrollingParent,NestedScrollingChild, ScrollingView接口。它的作用类似于Android.widget.ScrollView,不同点在于NestedScrollView支持嵌套滑动。
相关文章推荐
- Android 6.0 AppBarLayout+CollapsingToolbarLayout+NestedScrollView简单使用
- Material Design风 第二话(CollapsingToolbarLayout+AppBarLayout+NestedScrollView)
- AppBarLayout、CoordinatorLayout、CollapsingToolbarLayout、NestedScrollView
- Design 四: CoordinatorLayout + AppBarLayout+ Toolbar+NestedScrollView
- CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+ViewPager滑动效果,以及代码处理是否推动效果
- CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,NestedScrollView,RecyclerView结合使用
- 仿微博个人主页时使用 CoordinatorLayout+AppBarLayout+viewpager(NestedScrollView和RecycleView) 实现方法: <?xml ver
- 一句代码解决CoordinatorLayout+AppBarLayout+NestedScrollView滑动不流畅的问题
- Android v26版本AppBarLayout快速滑动导致回弹的解决方案CollapsingToolbarLayout
- CoordinatorLayout、AppBarLayout、 Toolbar、CollapsingToolbarLayout、NestedScrollView 综合使用,详细解析
- Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用
- CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar用法小结
- AppBarLayout CollapsingToolbarLayout 的进一步使用
- Android M 控件:AppBarLayout,CoordinatorLayout,CollapsingToolbarLayout
- RecyclerView 、CardView、FAB、CoordinatorLayout、ToolBar、Snackbar、CollapsingToolbarLayout、NavigationView
- 关于CoordinatorLayout包含CollapsingToolbarLayout和NestedScrollView展开与折叠相关属性
- AppBarLayout和CollapsingToolbarLayout实现头部滑动折叠
- CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar
- CollapsingToolbarLayout+TabLayout+ViewPager
- Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用