FloatButton是漂浮式按钮,也可以说是不同种设计的Button,因为它基本上设定也就跟Button是大同小异的,不过它也可以帮忙在未来设计Button的时候有更多不一样的变化,而Snackbar则可以说是Toast的亲戚,所以我今天将带大家了解这两个元件和之前所介绍过的有甚麽不同之处。
<androidx.coordinatorlayout.widget.CoordinatorLayout
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"
android:id="@+id/coordinatorLayout"
tools:context=".MainActivity">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:onClick="open"
android:src="@drawable/ic_baseline_done_24"
app:backgroundTint="@color/purple_200"
app:elevation="6dp"
app:pressedTranslationZ="12dp"
app:fabSize="normal" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
可以看到很简单的加入一个FloatButton而已,大部分设定也跟Button差不多,以下我稍微讲解不同的设定。
不过这里要注意的是,因为我将与Snackbar做结合,所以改变了最外层的Layout变成CoordinatorLayout并加上了id,我也将在最後展现CoordinatorLayout的效果,这里先注意到即可。
public class MainActivity extends AppCompatActivity {
CoordinatorLayout coordinatorLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout);
}
public void open(View v) {
Snackbar.make(coordinatorLayout, "我是Snackbar", Snackbar.LENGTH_LONG)
.setAction("按我一下", new View.OnClickListener() {
@Override
public void onClick(View v) {
// 点击讯息时要执行的动作
Toast.makeText(MainActivity.this, "你按了 Snackbar",
Toast.LENGTH_SHORT).show();
}
})
.setActionTextColor(Color.YELLOW) // 可以指定文字颜色
.show();
}
}
我在Snackbar加上了按钮,这也是跟Toast不一样的地方,这里我让按钮的功能为产生Toast,可以藉此比较一下两者的相似之处,不过也可以不加上按钮,把setAction移除即可,一样可以产生Snackbar,而Snackbar还有一个特点是能当Snackbar产生时,右滑即可移除,最後看一下效果和CoordinatorLayout能让两者不重叠的特色。
可以看见Snackbar将FloatButton往上推,这就是CoordinatorLayout的效果,是不是挺不错的呢。
今天FloatButton和Snackbar就讲到这边,谢谢大家~
>>: Day 25 | 使用ManoMotion制作Flappy Bird游戏 Part1 - 障碍物山的移动与产生
佳作之後 承蒙评审给予肯定,最直接的感谢方式就是狗尾续貂一番。 沈淀了一个多月,我时常咀嚼结语中故作...
本篇搭配 LeetCode 1.Two Sum 题目: Given an array of inte...
13. Roman to Integer 今天我们一起挑战leetcode第13题Roman to ...
课程目标 了解软件架构师所应具备的技能与素养,分析与规划软件架构模型,撰写符合国际标准的SAD (S...
前面两天的文章中我们谈到泛型(generics)的使用,以及如何透过 extends 来限制泛型可被...