Каковы новые возможности библиотеки поддержки дизайна Android и как использовать ее Snackbar?

Android M Preview для разработчиков был выпущен вчера. Как обычно, вводится много удивительных новых функций. Я заметил это Snackbar - один из них.

Я прочитал документ о Snackbar, из которого я узнал, что Snackbar находится в библиотеке библиотеки поддержки дизайна Android, абсолютный путь которой android.support.design.widget.Snackbar.

и в документе сказано, что:

Snackbars обеспечивают легкую обратную связь об операции. Они показывать краткое сообщение внизу экрана на мобильных и нижний левый на больших устройствах. Snackbars появляются над всеми другими элементами на экран и только одно можно показать одновременно.

они автоматически исчезают после тайм-аута или после взаимодействия с пользователем в другом месте на экране, особенно после взаимодействий, которые вызывают новая поверхность или активность. Snackbars можно пролистать с экрана.

Итак,Snackbar вести себя как Toast или a Dialog? Можно ли использовать Snackbars в файле макета? Как я могу использовать его программно?

П. С.:

  • будут оценены все образцы на пользе Snackbar.
  • библиотека поддержки дизайна Андроида новая библиотека поддержки, смогла кто-нибудь покажет мне подробности этой библиотеки?

8 ответов


новая Snackbar не требует Android-M.

внутри новая библиотека поддержки дизайна и вы можете использовать его сегодня.

просто обновите SDK добавьте эту зависимость в свой код:

compile 'com.android.support:design:22.2.0'

вы можете использовать такой код:

Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
        .setAction("Action", null)
        .show();

это как тост.

enter image description here

до назначить действие вы должны установить OnClickListener.

Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
        .setAction("Action", myOnClickListener)
        .show();

если вы хотите изменить фон цвета можно использовать что-то вроде этого:

 Snackbar snackbar = Snackbar.make(view, "Here's a Snackbar",       
                   Snackbar.LENGTH_LONG);
 View snackBarView = snackbar.getView();
 snackBarView.setBackgroundColor(colorId);
 snackbar.show();

enter image description here

если вы хотите иметь некоторые встроенные функции, как размах-к-уволить жест, или FAB прокрутки в закусочной, просто CoordinatorLayout в иерархии представлений.


On Activity вы можете использовать:

String s = "SnackBar"
Snackbar.make(findViewById(android.R.id.content), s, Snackbar.LENGTH_LONG).show();

и Fragment:

Snackbar.make(getView(), s, Snackbar.LENGTH_LONG).show();

Edit:

для изменения цвета фона я использую что-то вроде этого:

String s = "SnackBar"
Snackbar snack = Snackbar.make(getView(), s, Snackbar.LENGTH_LONG);
View view = snack.getView();
view.setBackgroundColor(Color.YELLOW); 
snack.show();

и для изменения цвета текста (несмотря на тему):

View view = snack.getView();
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);

работает как шарм ;-)


как Snackbar,он действует как Toast но отличается с Toast. закусочные отображаются в нижней части экрана и содержат текст с дополнительным одним действием. Они автоматически тайм-аут после заданной длины времени, анимируя с экрана. Кроме того, пользователи могут провести их до тайм-аута, который значительно мощнее тостов, еще один легкий механизм обратной связи.

вы можете использовать его программно, как это:

Snackbar snackbar = Snackbar
  .make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG)
  .setAction(R.string.snackbar_action, myOnClickListener);
snackbar.setActionTextColor(Color.CYAN);
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(Color.YELLOW);//change Snackbar's background color;
TextView textView = (TextView)snackbarView .findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLUE);//change Snackbar's text color;
snackbar.show(); // Don’t forget to show!

обратите внимание на использование в методе make() - Snackbar будет пытаться найти его, чтобы убедиться, что он закреплен на его дне.

более того, Библиотека Поддержки Дизайна Android используется Android 2.1+ (API 7+), которая включает навигация ящик вида, плавающие метки для редактирования текста, плавающая кнопка действия, закусочная, вкладки и что-то в этом роде.

Навигатора

навигационный ящик может быть важным координационным центром для идентификации и навигации в вашем приложении, а согласованность в дизайне здесь может существенно повлиять на то, насколько легко ваше приложение для навигации, особенно для пользователей в первый раз. NavigationView делает это проще, предоставляя рамки, необходимые для навигационного ящика, а также возможность раздувать навигационные элементы через меню ресурс.

вы можете использовать его как это:

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">
    <!-- your content layout -->
    <android.support.design.widget.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/drawer_header"
            app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>

что касается меню ящика, это может быть:

<group android:checkableBehavior="single">
    <item
        android:id="@+id/navigation_item_1"
        android:checked="true"
        android:icon="@drawable/ic_android"
        android:title="@string/navigation_item_1"/>
    <item
        android:id="@+id/navigation_item_2"
        android:icon="@drawable/ic_android"
        android:title="@string/navigation_item_2"/>
</group>

или:

<item
    android:id="@+id/navigation_subheader"
    android:title="@string/navigation_subheader">
    <menu>
        <item
            android:id="@+id/navigation_sub_item_1"
            android:icon="@drawable/ic_android"
            android:title="@string/navigation_sub_item_1"/>
        <item
            android:id="@+id/navigation_sub_item_2"
            android:icon="@drawable/ic_android"
            android:title="@string/navigation_sub_item_2"/>
    </menu>
</item>

вы получите обратные вызовы для выбранных элементов, установив OnNavigationItemSelectedListener с помощью setNavigationItemSelectedListener (). Это предоставляет вам MenuItem, который был нажат, что позволяет обрабатывать события выбора, изменить состояние checked, загрузить новое содержимое, программно закрыть ящик или любой другие действия, которые вы можете захотеть.

плавающие метки для редактирования текста

даже скромный EditText имеет комнату для того чтобы улучшить в материальном дизайне. А EditText только скроет текст подсказки после ввода первого символа, теперь вы можете обернуть его в TextInputLayout, в результате чего текст подсказки станет плавающая метка выше EditText, гарантируя, что пользователи никогда не теряют контекст в том, что они вводят. В дополнение к показу подсказок, вы можете также отобразите сообщение об ошибке ниже EditText по телефону setError().

Плавающая Кнопка Действия

A плавающая кнопка действия круглая кнопка, обозначающая основное действие на вашем интерфейсе. Библиотека дизайна FloatingActionButton дает вам единую последовательную реализацию, по умолчанию окрашенную с помощью colorAccent из вашей темы.

As FloatingActionButton выходит ImageView, вы будете использовать android:src или любой из методов, таких как setImageDrawable() для управления значком, показанным в FloatingActionButton.

вкладки

шаблон навигации верхнего уровня обычно используется для организации различных групп контента. Библиотека дизайна TabLayout реализует обе фиксированные вкладки, где ширина представления делится поровну между всеми вкладками, а также прокручиваемые вкладки, где вкладки не имеют равномерного размера и могут прокручиваться по горизонтали.

вкладки могут быть добавлены программно:

TabLayout tabLayout = ...;
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));

если вы хотите использовать ViewPager для горизонтальной подкачки между вкладками вы можете создавать вкладки непосредственно из своего PagerAdapter’s getPageTitle() а затем соединить два вместе с помощью setupWithViewPager(). Это гарантирует, что события выбора вкладки обновят ViewPager и изменения страницы обновите выбранную вкладку.

CoordinatorLayout и панель приложений

библиотека дизайна представляет CoordinatorLayout, макет, который обеспечивает дополнительный уровень управления событиями касания между дочерними представлениями, чем многие компоненты в библиотеке дизайна пользуются. Если вы попытаетесь использовать AppBarLayout позволяет ваш Toolbar и другие представления (например, вкладки, предоставляемые TabLayout) реагировать на события прокрутки в представлении брата, отмеченном ScrollingViewBehavior. Поэтому вы можете создать макет, такой как:

<android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

     <! -- Your Scrollable View -->
    <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
   <android.support.v7.widget.Toolbar
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">

        <android.support.design.widget.TabLayout
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">
     </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

теперь, когда пользователь прокручивает RecyclerView на AppBarLayout смогите ответить к тем событиям путем использование детей прокрутите флаги, чтобы контролировать, как они входят (прокрутка на экране) и выходят (прокрутка с экрана).

библиотека дизайна, AppCompat и вся библиотека поддержки Android являются важными инструментами в предоставлении строительных блоков, необходимых для создания современного, отлично выглядящего приложения для Android, не создавая все с нуля.


Я codeding

Snackbar snackbar = Snackbar
        .make(getView(), text, Snackbar.LENGTH_INDEFINITE);

View sbView = Global.alert.getView();
sbView.setBackgroundColor(0xFF000000);

TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.WHITE);
textView.setTextSize(30);

Global.alert.show();

Snackbar способны отображать значки также.

например: ни для одной сети вы не можете показать snackbar как это(так же, как Gmail делает).

SpannableStringBuilder builder = new SpannableStringBuilder();
    builder.append(" ").setSpan(new ImageSpan(this, R.drawable.snackbar_icon), 0, 1, 0);
    builder.append(" No Network Available");
    Snackbar snackBar = Snackbar.make(findViewById(R.id.co_ordinate), builder, Snackbar.LENGTH_LONG);
    snackBar.setAction("RETRY", new View.OnClickListener() {
        @Override
        public void onClick(View v) { //Retry Code here 

        }
    });
    snackBar.show();

вы видели http://android-developers.blogspot.in/2015/05/android-design-support-library.html?

он суммирует всю поддержку lib.


вы также можете изменить цвет текста и фона закусочной

 Snackbar snackbar = Snackbar.make(view, "Text",
                            Snackbar.LENGTH_LONG);
                    View snackBarView = snackbar.getView();
                    TextView tv = (TextView) snackBarView.findViewById(android.support.design.R.id.snackbar_text);
                    tv.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.colorAccent));
                    snackBarView.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.colorPrimaryDark));
                    snackbar.show();

это очень просто сделать перекус в android в течение 10 секунд

Snackbar.make(view, "Hello SnackBar", Snackbar.LENGTH_LONG)
                    .setAction("Its Roy", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                        }
                    })
                    .setDuration(10000)
                    .setActionTextColor(getResources().getColor(R.color.colorAccent))
            .show();