вторник, 21 июля 2015 г.

Стилізація Snackbar

Вітаю, ми повертаємось до наступника діда-Toast нового молодіжного і сучасного Snackbar. Сьогодні ми розглянемо декілька надзвичайно вражаючих можливостей з бібліотеки підтримки (design support library) і собливо Snackbar.
Stay tuned!

Стилізація Snackbar

В попередній публікації, ми розібралися, як користуватися Snackbar, а сьогодні ми поглянемо як можна кастомізувати snackbar та відобразити його іншим кольором, стилізованим під наші потреби, щоб це мало значення для користувача, наприклад відображати червоним помилки.
Виглядатиме наш додаток так:

Styling snackbar

Styling snackbar 1


Як застосувати фоновий колір для Snackbar

Отримати вью нашого Snackbar ми можемо за допомогою методу getView() та застосувати той колір, який ми тільки захочемо.
На приклад:
1
snackbar.getView().setBackgroundColor(colorId);
Знизу ми маємо клас ColoredSnackbar, який містить в собі деякі методи, що як раз таки міняють колір snackbar на основі їх конкретного типу.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class ColoredSnackbar {
    private static final int red = 0xfff44336;
    private static final int green = 0xff4caf50;
    private static final int blue = 0xff2195f3;
    private static final int orange = 0xffffc107;
    private static View getSnackBarLayout(Snackbar snackbar) {
        if (snackbar != null) {
            return snackbar.getView();
        }
        return null;
    }
    private static Snackbar colorSnackBar(Snackbar snackbar, int colorId) {
        View snackBarView = getSnackBarLayout(snackbar);
        if (snackBarView != null) {
            snackBarView.setBackgroundColor(colorId);
        }
        return snackbar;
    }
    public static Snackbar info(Snackbar snackbar) {
        return colorSnackBar(snackbar, blue);
    }
    public static Snackbar warning(Snackbar snackbar) {
        return colorSnackBar(snackbar, orange);
    }
    public static Snackbar alert(Snackbar snackbar) {
        return colorSnackBar(snackbar, red);
    }
    public static Snackbar confirm(Snackbar snackbar) {
        return colorSnackBar(snackbar, green);
    }
}

Як використовувати?

1
2
Snackbar snackbar = Snackbar.make(getView(), R.string.hello_snackbar, Snackbar.LENGTH_SHORT);
ColoredSnackBar.alert(snackbar).show();

Де використовувати `getView()`, наприклад у фрагменті для отримання вью (view), алк ви можете застосувати і в FrameLayout чи CoordinatorLayout.

source

Комментариев нет:

Отправить комментарий