至于Snackbar
,它的作用类似于 aToast
但与 a 不同Toast
。Snackbars显示在屏幕底部,包含带有可选单个操作的文本。它们会在给定的时间长度后通过屏幕上的动画自动超时。此外,用户可以在超时之前将它们刷掉,这比 toasts 强大得多,这是另一种轻量级的反馈机制。
您可以像这样以编程方式使用它:
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!
注意 View 在方法中的使用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>
您将通过使用 setNavigationItemSelectedListener() 设置 OnNavigationItemSelectedListener 来获取所选项目的回调。这为您提供了被单击的 MenuItem,允许您处理选择事件、更改检查状态、加载新内容、以编程方式关闭抽屉或您可能想要的任何其他操作。
用于编辑文本的浮动标签
即使是不起眼的EditText
人在材料设计上也有改进的空间。虽然 aEditText
会在输入第一个字符后隐藏提示文本,但您现在可以将其包裹在 a 中TextInputLayout
,使提示文本成为上方的浮动标签EditText
,确保用户在输入内容时永远不会丢失上下文。除了显示提示外,您还可以EditText
通过调用在下方显示错误消息setError()
。
浮动操作按钮
浮动操作按钮是一个圆形按钮,表示界面上的主要操作。设计库FloatingActionButton
为您提供了一个一致的实现,默认情况下使用colorAccent
来自您的主题的颜色。
作为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 应用程序所需的构建块,而无需从头开始构建所有内容。