自定義SnackBar

simplepeng發表於2018-07-11

前言

我瀏覽material.io網站時,從所謂的“Material Design 2”中找到一些新的元件,並發現Snackbar已經改變了,它不再佔用整個螢幕長度,並且周圍會有一個間距。

自定義SnackBar

但我並沒有從Support Library的alpha版本中找到它,所以我決定自己實現一下。

1、建立Drawable檔案

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#323232" />
    <corners android:radius="4dp" />
</shape>
複製程式碼

2、建立工具類

public class SnackbarHelper {

    public static void config(Context context, Snackbar snack) {
        addMargins(snack);
        setRoundBordersBg(context, snack);
        ViewCompat.setElevation(snack.getView(), 6f);
    }

    private static void addMargins(Snackbar snack) {
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) snack.getView().getLayoutParams();
        params.setMargins(12, 12, 12, 12);
        snack.getView().setLayoutParams(params);
    }

    private static void setRoundBordersBg(Context context, Snackbar snackbar) {
        snackbar.getView().setBackground(context.getResources().getDrawable(R.drawable.bg_snackbar));
    }
}
複製程式碼

3、使用

public void showSnackbar(View view) {
    Snackbar snackbar = Snackbar.make(view, "這個一個snackbar", Snackbar.LENGTH_SHORT);
    snackbar.setAction("ok", new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
    snackbar.setActionTextColor(Color.RED);
    SnackbarHelper.config(MainActivity.this, snackbar);
    snackbar.show();
}
複製程式碼

4、展示

自定義SnackBar

相關文章