Android Design 新控件

文章后面收录了学习中参考过的相关文章,此处只对遇到的问题做必要的记录###

design包里面的控件.png

1、TextInputLayout###

Paste_Image.png

前后对比.gif

问题说明:

  • 左右两次运行程序代码唯一不同的地方是有没有* mTextInputLayout.setError(null) *这一句,
  • 没有这一句的时候运行效果如左侧展示,加上这一句运行效果如右侧展示,
  • 看代码,就是点击button检测EditText里面的内容是否包含0,包含0,提示错误,不包含0,不提示错误,左侧第一次输入10,提示错误了,删掉0再加上0,不提示错误,但是提示错误语句所占的空间还是占用了,只能看到下方的EditText下移了而已——百思不得其姐,Google了好久没找到原因和解决办法,看源码也没看出个所以然,最后试着加上* mTextInputLayout.setError(null) *这一句,问题解决!!!

2、FloatingActionButton###

  • 不在代码中设置点击事件,单纯地在布局里放一个该控件,点击的时候是没有点击效果的,不像button,放上去就有点击效果。
  • 官方的就基本用了一下,代码中若要用到,还是用这个第三方的吧——makovkastar/ FloatingActionButton
demo.gif

3、NavigationView###

Android Design Support Library初探,NavigationView实践
DrawerLayout几个很重要的布局特点:

  • 主要内容视图必须是DrawerLayout的第一个子view。
  • 主要内容视图的width和height两个属性的值必须是match。
  • 抽屉视图必须设置属性android:layout_gravity的属性值。
    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- Content -->
        <FrameLayout
            android:id="@+id/content_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <!-- Drawer -->
        <android.support.design.widget.NavigationView
            android:id="@+id/navigation"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:menu="@menu/navigation_menu"
            app:headerLayout="@layout/header_layout"/>
    </android.support.v4.widget.DrawerLayout>
  • 抽屉视图必须使用dp方式指定width的值和height的值是match。

加上这一句,才会在toolbar上显示打开关闭drawer的按钮mActionBarDrawerToggle.syncState();###

*Synchronize the state of the drawer indicator/affordance with the linked DrawerLayout. *


4、CoordinatorLayout###

以下是对技术鸟文章的理解,需要先看相关链接技术鸟的原文

——
3、一个特殊的滑动型控件并设置layout_behavior属性,这里用的是ViewPager。注意,layout_behavior的属性值用的是系统定义好的固定字符串@string/appbar_scrolling_view_behavior,大家感兴趣的自己去翻阅源码看看,后续介绍behavior时,我再仔细讲解。

对于第三点,这里拿出来单独强调一下,有没有发现滑动型控件前我用了“特殊”两个字来修饰!CoordinatorLayout之所以能够协调Children View之间的交互行为,主要就是依赖于NestedScrolling这个东西,这里涉及到两个接口类NestedScrollingParent和NestedScrollingChild。CoordinatorLayout实现了前者,而CoordinatorLayout的Children核心之一,滑动型控件,实现了后者,所以才能够做出这个交互行为。
——
文/亦枫(简书作者)
原文链接:http://www.jianshu.com/p/4b0f3c80ebc9#
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

看到这段话我就困惑了,ViewPager也没有实现NestedScrollingChild接口啊?于是我开始尝试……###

  • 是不是ViewPager中放的child view实现了这个接口就可以?####

1、如果使用的adapter继承的是FragmentPagerAdapter,那么Fragment绑定的布局根view是RecyclerView的话,且必须设置adapter,可以实现所需的效果。
2、如果使用的adapter继承的是PagerAdapter,那么ViewPager每页所放布局根view是RecyclerView的话(RecyclerView不设置adapter都可以),可以实现所需的效果。
但是,都用RecyclerView了,岂有不设置setAdapter的道理,除非像我这样搞实验懒得写,所以综上,ViewPager子布局是RecyclerView,可以实现所需的效果。
3、如果不符合第1、2条,聪明如你我肯定想到了ViewCompat.setNestedScrollingEnabled(mViewPager,true);但是没有用,也实现不了相应的效果。

  • 其实有一个类我发现很关键——android.support.v4.widget.NestedScrollView####

/**
 * NestedScrollView is just like {@link android.widget.ScrollView}, but it supports acting
 * as both a nested scrolling parent and child on both new and old versions of Android.
 * Nested scrolling is enabled by default.
 */
public class NestedScrollView extends FrameLayout implements NestedScrollingParent,
        NestedScrollingChild, ScrollingView {

总得来说,NestedScrollView这个类实现了三个接口,并且继承了FrameLayout,但是 NestedScrollView is just like android.widget.ScrollView ——注意了、注意了、注意了——它很像 ScrollView,如果你这样写

        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <android.support.v4.view.ViewPager
                android:id="@+id/vp_coo"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </android.support.v4.view.ViewPager>
        </android.support.v4.widget.NestedScrollView>

**就会出现类似ScrollView嵌套ViewPager,ViewPager不显示的问题 **

到此,总结如下:##


  • **单页面。如果不用滑动列表类的控件,直接放在NestedScrollView下;如果用滑动列表类的控件,直接用RecyclerView **
       <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="@string/app_name"/>

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

        </android.support.v7.widget.RecyclerView>
  • 多页面。这就必须要用到ViewPager了 ,如果ViewPager下的布局无滑动列表效果,根布局用NestedScrollView,如果有滑动列表效果,用 RecyclerView
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_coo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
        </android.support.v4.view.ViewPager>

技术鸟的简书

一个Activity掌握Design新控件

FloatingActionButton、TextInputLayout、TextInputEditText简单用法

CoordinatorLayout、AppBarLayout简单用法

codepath教程:浮动操作按钮详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容