Android Design Support Library 的基本使用

Android 5.0 Lollipop 推出了 Material Design 安卓界面风格的设计理念并且给出了一个 Material Design 的兼容库,库中包含了navigation drawer view,输入控件的悬浮标签,悬浮操作按钮,snackbar,选项卡等清新的新控件,以及将这些控件结合在一起的手势滚动框架,本篇对系列控件的使用进行介绍。

1. Navigation View

Navigation View 结合 DrawerLayout 的抽屉导航栏布局

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/id_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    tools:context="hobby.com.myapplication_05_md.MainActivity">

    <!-- 第一个子view 将会是主布局 -->

    <!-- 第二个子view 就是抽屉中布局,可以是NavigationView,也可以是其他View,比如ListView -->
    <android.support.design.widget.NavigationView
        android:id="@+id/id_navigation_view"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/item_header"
        app:menu="@menu/navi_menu">

    </android.support.design.widget.NavigationView>
    </android.support.v4.widget.DrawerLayout>
2. TextInputLayout ,包裹一个EdtiView后,它的hint 会自动加上动画,并且可以设置一些像密码状态开关的icon (app:passwordToggleEnabled)之类的提示符

TextInputLayout

 <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true">

        <EditText
            android:id="@+id/edt_01"
            android:layout_width="match_parent"
            android:layout_height="120dp"
            android:background="#11ff0000"
            android:gravity="start"
            android:hint="hint"
            android:inputType="textPassword"
            />

    </android.support.design.widget.TextInputLayout>
3. Floating Action Button,一个悬浮小按钮

Floating Action Button

<android.support.design.widget.FloatingActionButton
        android:id="@+id/id_fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        app:rippleColor="@color/colorPrimary"
        />
5. Snackbar 升级版的 Toast

Snackbar

Snackbar.make(viewParent,"fab click!", Snackbar.LENGTH_SHORT).setAction("undo?", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                }).show();
6. TabLayout

这里写图片描述

<android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="top"
            app:tabTextColor="@color/white">
    @BindView(R.id.id_tab_layout)
    TabLayout mTabLayout;

    mTabLayout.addTab(mTabLayout.newTab().setText("ITEM ONE"));
    mTabLayout.addTab(mTabLayout.newTab().setText("ITEM TWO"));
    mTabLayout.addTab(mTabLayout.newTab().setText("ITEM THREE"));
7. CoordinatorLayout(协调者布局),通过给它的子View设置各种Behavior 标志,使子View 间相互协调

举个栗子, CoordinatorLayout 和 the app bar:
①. 给RecyclerView (或者其它可以滑动的View)增加 app:layout_behavior=”@string/appbar_scrolling_view_behavior”
②. 给 AppBarLayout 的childView 设置相应的 scrollFlags 来指定:当①中指定的支持滚动的View (下简称指定View)滚动时,AppBarLayout 的子View 要如何做出协调,

scroll: childView 将随着指定View 的滚动而被滚动出/入屏幕,没有设置此flag 的childView 将被固定在屏幕顶部
enterAlways: AchildView 不可见时,指定View 的向下滚动事件会先把childView 滚下来,之后再是指定View 内容的滚动
enterAlwaysCollapsed: childView 设置了最小高度(minHeight)且添加了enterAlways flag 时才有效;当childView 不可见时,指定View 的向下滚动都会先把childView 滚下来,滚到minHeight 之后,向下滚动的就是指定View 内容,指定View 的内容滚完后,继续把childView 滚下来直到完全展开
exitUntilCollapsed: 发生向上滚动事件时,childView 向上滚动直到可见高度为minHeight 时固定下来,不再滚动

详情可参考http://www.jianshu.com/p/7caa5f4f49bd

<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"
    android:orientation="vertical">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/id_toolbar"
            android:title="@string/toolbar"
            android:background="@android:color/holo_blue_dark"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:minHeight="48dp"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"/>

        <android.support.design.widget.TabLayout
            android:id="@+id/id_tab_layout"
            app:tabTextColor="@android:color/white"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />

    </android.support.design.widget.AppBarLayout>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/id_list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</android.support.design.widget.CoordinatorLayout>

其他参考:Android的材料设计兼容库(Design Support Library)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值