一个专注音视频领域问答的小圈子

总结一下 Material Design 控件使用。

TextInputLayout

TextInputLayout 控件是一个容器,只接受一个子元素,而子元素需要是一个 EditText 控件。

TextInputLayout 的作用是当输入文字时,它可以把提示文字 Hint 移至 EditText 上方。

    <android.support.design.widget.TextInputLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginEnd="8dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="8dp"
        app:layout_constraintTop_toBottomOf="@+id/usernameLayout"
        android:id="@+id/passwordLayout"
        >

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="hint"/>
    </android.support.design.widget.TextInputLayout>

而当 EditText 中输入的内容不正确时,TextInputLayout 还能够进行错误的处理。setError 方法会在 EditText 下方显示红色的错误消息。setErrorEnabled方法开启错误提醒功能,使用代码如下:

 String username = mUsernameLayout.getEditText().getText().toString();
        String password = mPasswordLayout.getEditText().getText().toString();

        if (!username.equals(RIGHT_NAME)){
            mUsernameLayout.setError("not right username");
            Log.d(TAG,"not right username");
        }else if (!password.equals(RIGHT_PASSWORD)){
            mPasswordLayout.setError("not right password");
            Log.d(TAG,"not right password");
        }else {
            // 取消错误提醒
            mUsernameLayout.setErrorEnabled(false);
            mPasswordLayout.setErrorEnabled(false);
            Toast.makeText(TextInputActivity.this,"Welcome !",Toast.LENGTH_SHORT).show();
        }

TabLayout

TabLayout 控件是用来和 ViewPager 配合使用的。当滑动 ViewPager 内部的页面时需要让上方的 Tab 也随之移动时就可以考虑使用 TabLayout 了。

使用 ViewPager 还需要对应的 Adapter ,简单使用代码如下:

   mTabPagerAdapter = new TabPagerAdapter(getSupportFragmentManager());

        mViewpager.setAdapter(mTabPagerAdapter);

        // 设置回调
        mViewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
        // 设置 Tab 模式
        mTabLayout.setTabMode(TabLayout.MODE_FIXED);

        mTabLayout.setupWithViewPager(mViewpager);

初次之后,还可以给 TabLayout 设置各种属性,既可以从 XML 布局中添加,也可以在代码中通过 set 方法来设置,如下图所示:

tablayout-attribute

Toolbar

Toolbar 可以用来替换 ActionBar 的,如果要替换 ActionBar ,那么在使用时,需要配置 Activity 的 theme 为Theme.AppCompat.NoActionBar,或者在对应的主题中加入如下:

		<item name="windowActionBar">false</item>
		<item name="android:windowActionBar">false</item>

不然会报错This Activity already has an action bar supplied by the window decor.

并且在代码中还需要添加 setSupportActionBar(toolbar);

如果当做单独的控件来使用则不需要对主题进行设置。

Toolbar 也有各种设置选项,包括标题,子标题,Logo,菜单等。

	mToolbar.setTitle("Title");
        mToolbar.setSubtitle("SubTitle");
        mToolbar.setNavigationIcon(R.mipmap.ic_drawer_home);
        mToolbar.inflateMenu(R.menu.toolbar_menu);
        mToolbar.setLogo(R.mipmap.ic_launcher);

其中,当想给 Toolbar 弹出的菜单设置样式时,可以通过 popupTheme属性来设置样式。popupTheme 的样式可以自定义 style ,也可以使用安卓自带的。

参考

  1. http://blog.csdn.net/qiujuer/article/details/51462471
  2. http://www.jcodecraeer.com/a/basictutorial/2015/0821/3338.html
  3. http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0731/3247.html
  4. http://www.jianshu.com/p/79604c3ddcae

知识星球

一个专注音视频领域问答的小圈子

公众号音视频开发进阶对应的知识星球,一个编程开发领域的专业圈子,贩卖知识和技巧!

※ 入群须知:了解该星球能提供的价值和帮助,在提问时务必阐述好背景,附带相关的信息。

iOS 用户可以加我微信 ezglumes 邀请你进星球,有疑问也可以加我微信咨询。

※ 星球内容:

基础教程:

在知识星球连载的干货教程,可以在专栏中找到,随着时间的推移,教程也会越来越多:

- 音视频基础概念
- WebRTC 入门教程及源码实践
- 播放器教程及源码实践
- OpenGL 和特效开发教程
- Vulkan 入门教程

部分内容可以在博客 https://glumes.com 中检索到,后面会在星球里持续更新.

干货分享:

涵盖了移动开发和音视频工程领域的绝大部分,从项目实战角度出发,提升能力,包括但不限于以下领域:

- Android/iOS 移动开发
- Camera 开发
- 短视频编辑 SDK 项目实践
- 在线直播和推流
- WebRTC 开发
- 播放器基础和提高
- OpenGL 图像渲染及特效开发
- C++ 基础和提高
- FFmpeg 使用和分析
- 干货资源和书籍分享

不止于技术方面的,各种 IT 新闻、茶余饭后、生活趣事也欢迎大家分享!!!

技术答疑解惑:

针对上述基础教程和干货分享的答疑,另外还有音视频和 IT 开发中的各种交流讨论。

- 基础知识点答疑
- 工业项目实践答疑
- 问题排查思路分析

一个 BUG 排查很久,不如来星球里提个问题,效率提升百倍。

求职和面试辅导:

一站式职场服务,每份工作都值得用心对待!!!

- 面试题和面试经验分享
- 简历修改和模拟面试
- 大厂内推和信息同步
- 职场经验分享
- 职业规划和发展分析

※ 星主和合伙人介绍

星主是公众号音视频开发进阶的作者,也是网站 https://glumes.com 的作者,曾参与过抖音、剪映等头部音视频 APP 底层 SDK 的开发。

合伙人也是在头条、快手从事音视频架构师的职位,具有多年的音视频开发经验,能力圈覆盖了音视频的绝大多数领域,资深音视频从业人员为你保驾护航。

微信公众号

扫描下面的二维码关注我的微信公众号《音视频开发进阶》,推送更多精彩内容!

添加我的微信 ezglumes 拉你入音视频与图形图像技术群一起交流学习~

wechat-account-qrcode

原创文章,转载请注明来源:    Android Material Desing 控件小结-1