Android Material Design 之 CoordinatorLayout + FloatingActionButton

https://material.io/guidelines/components/snackbars-toasts.html#snackbars-toasts-usage 中的 Don’t block the floating action button 部分,当 SnackBar 显示的时候,FloatingActionButton 跟着一起往上移动。

下面来看看怎么实现。

首先添加 design library

compile 'com.android.support:design:25.4.0'

布局文件如下




    


很简单,CoordinatorLayout 的右下角放一个 FloatingActionButton。

设置点击 FloatingActionButton 弹出 SnackBar,代码如下

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, "Snack Bar", Snackbar.LENGTH_LONG).show();
            }
        });
    }
}

运行效果如下

Android Material Design 之 CoordinatorLayout + FloatingActionButton_第1张图片

可以看到,SnackBar 弹出来的时候,FloatingActionButton 也跟着一起往上移动了。

我们仅仅是把 FloatingActionButton 放在了一个 CoordinatorLayout 中,它是怎么实现的呢?

这边涉及到 Behavior 的使用,我们看 FloatingActionButton 的源码会发现它使用了 FloatingActionButton.Behavior

@CoordinatorLayout.DefaultBehavior(FloatingActionButton.Behavior.class)
public class FloatingActionButton extends VisibilityAwareImageButton

看 FloatingActionButton.Behavior 介绍,可以知道它的主要作用就是不让 SnackBar 盖住自己

    /**
     * Behavior designed for use with {@link FloatingActionButton} instances. Its main function
     * is to move {@link FloatingActionButton} views so that any displayed {@link Snackbar}s do
     * not cover them.
     */
    public static class Behavior extends CoordinatorLayout.Behavior

你可能感兴趣的:(Android Material Design 之 CoordinatorLayout + FloatingActionButton)