Material Design相关知识点(三)之Snackbar与FloatingActionButton
本文所要实现的效果
Snackbar组件
Snackbar组件根Toast类似,会土司,但是呢,又和Toast不一样,Snackbar组件可以土司,而且可以有土司出来按钮,并对按钮进行事件的绑定。
下面我们就来看看例子吧
首先布局文件很简单,一个button,按钮
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".Main1Activity">
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Snackbar按钮"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
下面就是点击button实现点击事件,弹出Snackbar了。
很简单,就是和Toast相识,但是需要注意的是,Snackbar用的是make方法,同时里面的第一个参数是View view,而Toast用的是makeText方法,而Toast是Context context
在Snackbar可以通过setAction来设置Snackbar里面的点击按钮,并实现相应的点击操作。本例就Toast了一下。最后和Toast一样,也要show一下(秀一秀更健康)
public class Main1Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view,"你使用的是Snackbar组件",Snackbar.LENGTH_SHORT)
.setAction("确定", new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(Main1Activity.this,"你点击了Snackbar",Toast.LENGTH_SHORT).show();
}
}).show();
}
});
}
}
FloatingActionButton悬浮按钮
这个布局关注点在FloatingActionButton
他也是一个按钮,只不过是悬浮与页面之上的。android:src
来实现该按钮的图片路径,android:layout_gravity="bottom|right"/>
来实现让悬浮按钮在右下角展示
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".Main2Activity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:src="@drawable/ic_add_black_24dp"
android:layout_gravity="bottom|right"/>
</FrameLayout>
</LinearLayout>
这里根Button没有什么区别,也是先找控件,然后设置其点击事件。
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
FloatingActionButton floatingActionButton=findViewById(R.id.fab);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view,"你使用的是Snackbar组件",Snackbar.LENGTH_SHORT)
.setAction("确定", new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(Main2Activity.this,Main3Activity.class);
startActivity(i);
}
}).show();
}
});
}
}