Exciter

生命不息、折腾不止

0%

Android-Snackbar的使用详解

本文完整源码下载地址:AndroidBasic

1.一行代码实现Snackbar

Snackbar使用跟Toast特别像,不通的是Snackbar可以设置一个Action:

1
2
3
4
5
6
7
8
9
Snackbar.make(mRootView, "这是一个Snackbar", Snackbar.LENGTH_SHORT)
//设置文本颜色
.setTextColor(getResources().getColor(android.R.color.holo_orange_dark))
//设置一个Action
.setAction("click", v -> Toast.makeText(SnackBarActivity.this, "点击了Snackbar", Toast.LENGTH_SHORT).show())
//设置Action按钮文本颜色
.setActionTextColor(getResources().getColor(R.color.white))
//显示Snackbar
.show();

2.Snackbar使用示例

2.1 示例xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".widget.snackbar.SnackBarActivity">

<include
layout="@layout/layout_tool_bar"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/btn_snack_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:text="SnackBar"
android:textAllCaps="false"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tool_bar" />

</androidx.constraintlayout.widget.ConstraintLayout>

2.2 示例Activity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.exciter.androidbasic.widget.snackbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.exciter.androidbasic.R;
import com.google.android.material.snackbar.Snackbar;

public class SnackBarActivity extends AppCompatActivity {

private View mRootView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_snackbar);
mRootView = findViewById(R.id.root_view);
Toolbar toolbar = findViewById(R.id.tool_bar);
toolbar.setTitle("Snackbar");
toolbar.setNavigationOnClickListener(v -> finish());
findViewById(R.id.btn_snack_bar).setOnClickListener(v -> showSnackBar());
}

private void showSnackBar() {
Snackbar.make(mRootView, "这是一个Snackbar", Snackbar.LENGTH_SHORT)
//设置文本颜色
.setTextColor(getResources().getColor(android.R.color.holo_orange_dark))
//设置一个Action
.setAction("click", v -> Toast.makeText(SnackBarActivity.this, "点击了Snackbar", Toast.LENGTH_SHORT).show())
//设置Action按钮文本颜色
.setActionTextColor(getResources().getColor(R.color.white))
//显示Snackbar
.show();
}
}

2.2 最终效果

2021042601