26
2017
09

Android开发--FloatingActionButton/Snackbar/CoordinatorLayout

FloatingActionButton

悬浮按钮是support库中的按钮因此布局文件如下

  <!--增加悬浮按钮-->
    <android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:src="@drawable/success"
    />

但是你看上图是不是很模糊的样子,而且貌似有一层阴影的感觉,而且是贴合在主布局中。我们设置它与当前界面有一定的高度。

app:elevation="8dp"

触发点击事件:

   //设置FloatingActionButton的点击事件
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"悬浮按钮",Toast.LENGTH_SHORT).show();
        }
    });

Snackbar

一个可以替代Toast的可交互提示工具

代码如下:

   //设置FloatingActionButton的点击事件
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Toast.makeText(MainActivity.this,"悬浮按钮",Toast.LENGTH_SHORT).show();
            Snackbar.make(v,"删除重要数据,请小心操作",Snackbar.LENGTH_SHORT)
                    .setAction("取消", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Toast.makeText(MainActivity.this,"你取消了本次的删除操作",Toast.LENGTH_SHORT).show();
                        }
                    })
                    .show();
        }
    });

从上面可知道操作和Toast是一样的。

从上图中可看到弹出的提示框将悬浮按钮给挡住了?这该怎么解决?

CoordinatorLayout可以上场了。


CoordinatorLayout

CoordinatorLayout是一个加强版的FrameLayout,CoordinatorLayout可以监听所有子控件的各种事件,从而自动的做出合理的相应。

如上图中的遮挡问题,当使用CoordinatorLayout监听到Snackbar的弹出事件之后,CoordinatorLayout内部自动将FloatingActionButton向上偏移,从而保证按钮不会被遮挡到。

布局文件只需要将FrameLayout该为android.support.design.widget.CoordinatorLayout即可实现。


总结:上述就Android中关于悬浮按钮FloatingActionButton和Snocker,以及CoordinatorLayout布局的一些概念和基本的操作。

都不难,但是至于真没做一些比较炫酷的操作就有待自己的领悟。

上一篇:Android 浅析Context 下一篇:Android开发--卡片式布局CardView/AppBarLayout