概述
Floating Action Button 簡稱 FAB,是一個懸浮的圓形按鈕,帶有陰影(MD 的設計思想就是呈現真實世界的效果,是包含燈光和陰影的)。這個設計很棒!
FAB 的詳細介紹可以參照 https://material.io/guidelines/components/buttons-floating-action-button.html 。
FAB 代碼詳解
首先需要引入 Design Support Library。
compile 'com.android.support:design:25.3.1'
Design Support Library 依賴于 v4 和 v7,所以不需要重復引入。
然后在 Layout 文件中加入 FAB。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.teletian.materialdesign.MainActivity"
tools:ignore="RtlHardcoded">
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="20dp"
android:layout_marginRight="20dp"
android:src="@drawable/ic_add_white_24dp"
app:backgroundTint="@color/colorAccent"
app:elevation="6dp"
app:fabSize="normal"
app:pressedTranslationZ="12dp"
app:rippleColor="@color/colorPrimary" />
</RelativeLayout>
關于 FAB 的屬性,這里解釋一下
app:fabSize:FAB 的大小。
https://material.io/guidelines/components/buttons-floating-action-button.html# 這里面也有介紹,
Normal(Default): 56 x 56dp
Mini: 40 x 40dp
不管是 Normal(Default) 還是 Mini,內部的 icon 都一樣大,24 x 24dp。
app:elevation:FAB 的海拔高度。
app:pressedTranslationZ:FAB 的按下狀態的海拔高度。
按下狀態的海拔高度是高于正常情況下的海拔高度的。
默認的 app:elevation 為 6dp。默認的 app:pressedTranslationZ 為 12dp。
各種默認的海拔高度可以參照 https://material.io/guidelines/material-design/elevation-shadows.html# 。
app:backgroundTint:FAB 的顏色。默認情況下使用強調色,可以更改為其他顏色。
app:rippleColor:FAB 的漣漪顏色。Material Design 要求按鈕按下要有漣漪效果,默認的漣漪顏色是灰色的,可以更改為其他的顏色。
FAB 還可以設置顯示和隱藏。例如有些應用要求滑動時顯示和隱藏。
fab.show()
fab.hide()
設置顯示和隱藏的時候監聽結束,然后做相應的操作。
fab.show(new FloatingActionButton.OnVisibilityChangedListener() {
@Override
public void onShown(FloatingActionButton fab) {
super.onShown(fab);
}
});
fab.hide(new FloatingActionButton.OnVisibilityChangedListener() {
@Override
public void onHidden(FloatingActionButton fab) {
super.onHidden(fab);
}
});
陰影不顯示的 Bug
在老版本的 Support Library 上,會有陰影不顯示的 Bug。
具體可以參照 https://issuetracker.google.com/issues/37048580 。