更新:16/08/2019带有android库的官方Material组件
随着新的Android材质组件添加到您的build.gradle:
implementation 'com.google.android.material:material:1.0.0'
然后添加您的布局:
android:id="@+id/floating_action_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
app:srcCompat="@drawable/ic_plus_24"/>
并使用它:
FloatingActionButton floatingActionButton =
(FloatingActionButton) findViewById(R.id.floating_action_button);
floatingActionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Handle the click.
}
});
如果您使用的材质主题为build.gradle,则您的FAB将继承材质样式。 否则,只需应用样式@style/Widget.MaterialComponents.FloatingActionButton
....
style="@style/Widget.MaterialComponents.FloatingActionButton"
..../>
更多信息在这里。
已更新:2015年5月30日,带有官方设计支持库
现在有一个官方小部件。
只需将此依赖项添加到您的build.gradle
compile 'com.android.support:design:22.2.0'
将此视图添加到您的布局:
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:src="@drawable/ic_done" />
并使用它:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//TODO
}
});
说明文件:
Android文档。
更新时间:2014年2月12日,使用Android 5代码
你也可以添加和stateListAnimator到你的按钮:
android:stateListAnimator="@anim/anim"
/>
其中anim.xml是:
android:state_enabled="true"
android:state_pressed="true">
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueFrom="@dimen/button_elevation"
android:valueTo="@dimen/button_press_elevation"
android:valueType="floatType" />
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueFrom="@dimen/button_press_elevation"
android:valueTo="@dimen/button_elevation"
android:valueType="floatType" />
Dimens.xml是
56dp
2dp
4dp
检查Daniele的答案。
关于Daniele提到的提纲。将height属性添加到Button中,并通过代码设置Outline:
android:background="@drawable/ripple"
android:stateListAnimator="@anim/anim"
android:src="@drawable/ic_action_add"
android:elevation="4dp"
/>
关于大纲:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutfab);
//Outline: OLD METHOD IN L-PREVIEW
//int size = getResources().getDimensionPixelSize(R.dimen.fab_size);
//Outline outline = new Outline();
//outline.setOval(0, 0, size, size);
//findViewById(R.id.fab).setOutline(outline);
Button fab = (Button) findViewById(R.id.fab);
ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
// Or read size directly from the view's width/height
int size = getResources().getDimensionPixelSize(R.dimen.fab_size);
outline.setOval(0, 0, size, size);
}
};
fab.setOutlineProvider(viewOutlineProvider);
}
}