一、核心組件
1咐蝇、過渡布局
(1)CoordinatorLayout(ViewGroup)
(2)AppBarLayout(LinearLayout)
(3)CollapsingToolbarLayout(FrameLayout)
(4)Toolbar(ViewGroup)
(5)NestedScrollView(FrameLayout)
2爆侣、菜單控件
(1)TabLayout(HorizontalScrollView)
- TabLayout用法:
http://www.cnblogs.com/JohnTsai/p/4715454.html - 使用TabLayout實現(xiàn)Bottom Tab:
https://www.aswifter.com/2015/08/09/implements-bottom-tab-with-tablayout/
(2)NavigationView(FrameLayout)
3凉蜂、常規(guī)控件
(1)RecyclerView
(2)CardView
(3)FloatingActionButton(FAB)
(4)TextInputLayout
(5)Snackbar
(6)SwipeRefreshLayout
二恨课、頁面滾動折疊效果
1险胰、實現(xiàn)方式
(1)志衣、折疊視圖使用Toolbar屯援,滾動視圖使用RecyclerView,兩者相互搭配念脯;
(2)狞洋、折疊視圖使用CollapsingToolbarLayout,滾動視圖使用NestedScrollView和二,兩者相互搭配徘铝;
(3)、折疊視圖使用Toolbar( + TabLayout)惯吕,滾動視圖使用ViewPager(Fragment + RecyclerView)
2惕它、布局特殊屬性
(1)、折疊視圖中的app:layout_scrollFlags
屬性:
scroll
:只要想要實現(xiàn)折疊展示的功能废登,就必須添加scroll
這個值淹魄;
exitUntilCollapsed
:手向上滑動(頁面向下滾動)時收縮View,但固定Toolbar一直在上面堡距;
enterAlways
:手向下滑動(頁面向上滾動)時甲锡,立即顯示被收縮折疊的Toolbar兆蕉;
enterAlwaysCollapsed
:手向下滑動(頁面向上滾動)時,View仍一直處于折疊狀態(tài)缤沦,直到滾動視圖滾到頂部而無法再滾動時View才展開到完整高度虎韵;
所以,
在實現(xiàn)方式(1)(3)中缸废,使用app:layout_scrollFlags="scroll|enterAlways"
包蓝;
在實現(xiàn)方式(2)中,使用app:layout_scrollFlags="scroll|exitUntilCollapsed|enterAlwaysCollapsed"
(也可以只寫"scroll|exitUntilCollapsed"
企量,因為不寫enter
默認(rèn)就為enterAlwaysCollapsed
)测萎。
(2)滾動視圖中的app:layout_behavior
屬性
三、NavigationView
- 新建Navigation Drawer Activity(發(fā)現(xiàn)布局根節(jié)點是DrawerLayout届巩,此節(jié)點里面只能放兩個子元素硅瞧,且兩子元素必須是平級的。第一個子元素是位于主界面的appbar第二個子元素是NavigationView恕汇,即側(cè)滑展示出來的抽屜)
- NavigationView
NavigationView有兩個特殊的屬性:
app:headerLayout="@layout/nav_header_navigation"
app:menu="@menu/activity_navigation_drawer"
上面的屬性是抽屜頭布局腕唧,參考Play商店側(cè)滑抽屜上面那個展示頭像和賬號名稱的部分。
下面的屬性是抽屜里詳細(xì)的菜單欄拇勃。
四四苇、FloatingActionButton(FAB)
- 一般的FAB(位于界面右下角)不需要寫什么特殊的屬性
- 特殊的FAB孝凌,例如附著在CollapsingToolbarLayout(其實是附著在AppBarLayout)的FAB方咆,有兩個特殊屬性
app:layout_anchor="@id/app_bar"
、app:layout_anchorGravity="bottom|end"
anchor是錨的意思蟀架,所以
上面的屬性代表此FAB的圓心附著在哪個View上面瓣赂,下面的屬性代表附著的對齊方式,此例是偏下偏右片拍,即附著在該View的右下方煌集。
五、CardView
- 內(nèi)容展示的基本載體原本放TextView或者ImageView的地方捌省,我們在外層套一個CardView苫纤,就能實現(xiàn)卡片式展示效果。
- CardView的特殊屬性:
app:cardCornerRadius="25dp"
app:cardElevation="10dp"
上面的屬性是用來設(shè)置卡片的圓角弧度纲缓。
下面的屬性指的是卡片的提升卷拘,即在Z軸上的高度。
六祝高、Snackbar
七栗弟、TextInputLayout
每一個原有的EditText外層都套一個TextInputLayout,此布局可以對EditText中輸入的文本進行驗證工闺,并給予相關(guān)提示乍赫。
(還有一個相關(guān)的叫TextInputEditText瓣蛀,單獨使用,不可嵌套在TextInputLayout中)