Ответ 1
Что касается Snackbar
, он действует как a 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 background color;
TextView textView = (TextView)snackbarView .findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLUE);//change Snackbar text color;
snackbar.show(); // Don’t forget to show!
Обратите внимание, что использование представления в методе make()
- Snackbar
будет пытаться найти его, чтобы оно было привязано к его нижней части.
Что еще, Библиотека поддержки дизайна Android используется для Android 2.1+ (API 7 +), которая имеет представление навигационного ящика, < сильные > плавающие метки для редактирования текста, кнопки с плавающим действием, snackbar, вкладки и что-то в этом роде.
Вид навигации
Ящик для навигации может быть важным центром для идентификации и навигации в вашем приложении, а согласованность в дизайне здесь может существенно повлиять на то, насколько просто ваше приложение должно перемещаться, особенно для пользователей в первый раз. 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, который был нажат, позволяя обрабатывать события выбора, изменять статус проверки, загружать новый контент, программно закрывать ящик или любые другие действия, которые могут вам понадобиться.
Плавающие метки для редактирования текста
Даже у скромного EditText
есть место для улучшения материального дизайна. В то время как только EditText
скрывает текст подсказки после ввода первого символа, теперь вы можете обернуть его в TextInputLayout
, в результате чего текст подсказки станет плавающей меткой над EditText
, гарантируя, что пользователи никогда не потеряют контекст в чем они входят. В дополнение к отображению подсказок вы также можете отобразить сообщение об ошибке ниже EditText
, вызвав setError()
.
Кнопка плавающего действия
A кнопка плавающего действия - это кнопка с округлением, обозначающая основное действие на вашем интерфейсе. Библиотеки дизайна FloatingActionButton
предоставляют единую согласованную реализацию, по умолчанию окрашенную с помощью colorAccent
из вашей темы.
Поскольку FloatingActionButton
extends ImageView
, вы можете использовать android:src
или любой из методов, таких как setImageDrawable()
, чтобы управлять значком, указанным в FloatingActionButton
.
Вкладка
Навигационный шаблон верхнего уровня обычно используется для организации различных группировок контента. Библиотеки дизайна TabLayout
реализуют обе фиксированные вкладки, где ширина представлений делится поровну между всеми вкладками, а также прокручиваемыми вкладками, где вкладки не являются одинаковым размером и могут прокручиваться по горизонтали.
Вкладки могут быть добавлены программно:
TabLayout tabLayout = ...;
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
Если вы хотите использовать ViewPager
для горизонтального подкачки между вкладками, вы можете создавать вкладки непосредственно из вашего PagerAdapter’s
getPageTitle()
, а затем соединить их вместе, используя setupWithViewPager()
. Это гарантирует, что события выбора табуляции обновят ViewPager
и изменения страницы, чтобы обновить выбранную вкладку.
КоординаторLayout и панель приложений
в библиотеке дизайна представлен CoordinatorLayout
, макет, который обеспечивает дополнительный уровень контроля над событиями касания между дочерними представлениями, что позволяет многим из компонентов библиотеки Design. Если вы попробуете использовать 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
может реагировать на эти события, используя флаги прокрутки дочерних элементов, чтобы контролировать, как они входят (прокрутка на экране) и выход (прокрутка экрана).
Библиотека Design, AppCompat и вся Библиотека поддержки Android являются важными инструментами в создании строительных блоков, необходимых для создания современного замечательного приложения для Android, без создания всего с нуля.