Android Design Support Library 中控件的使用简单介绍(一)
Android Design Support Library 中控件的使用简单介绍(一)
介绍
在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android 2.1 。 这些组件在我看来就是对 Github中最近比较火的 android 组件进行了封装!!
下载
要使用这个库,当然得先下载啦!(没有翻墙的同学肯定已经哭晕在厕所了!!)这里我给童鞋们,提供一个简单的方法:
就是使用 红杏 提供的公益代理!具体使用方法如下图:

之后就是使用 Android SDK Manager 更新下载了!!
使用
第一步--引用
引用这个库:在build.gradle文件中加上这段代码:compile 'com.android.support:design:22.2.0
第二步--具体控件的使用
TextInputLayout
以前当我们使用 EditText 这个组件的 hint 属性的时候,当用户输入第一个字母之后,这个 hint 中的文本就会消失!有点影响用户体验!但是现在不一样了!现在只要把 EditText 包含在 TextInputLayout 中,这个 hint 中的文本就会变成 floating lable 浮动在 EditText 上方!同时,也支持在 EditText 下方显示错误信息好了,我么先来看一下 TextInputLayout 这个控件的公共方法吧!

想必大家也能看明白 (我在有的函数解释下)
getEditText()得到控件中包含的 EditText 控件setError(CharSequence error)设置错误信息并显示在 EditText 下方 应用场景:比如用户输错了密码或者用户名等setHint(CharSequence hint)设置提示信息setErrorEnabled(boolean enabled)设置setError(CharSequence error)这个函数是否可用 记住哦:这个函数一定要在setError(CharSequence error)这个函数之后执行哦!具体原因 大家可以去看源码哦!
现在我们先在布局文件中布局:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/textinput">
<EditText
android:layout_marginTop="4dp"
android:layout_width="match_parent"
android:layout_height="48dp"/>
</android.support.design.widget.TextInputLayout>
很简单就是一个嵌套!我们接下来 onCreate(Bundle savedInstanceState) 方法中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textinput = (TextInputLayout) findViewById(R.id.textinput);
et_content = textinput.getEditText();
textinput.setHint("请输入用户名");
textinput.setError("密码输入错啦!");
textinput.setErrorEnabled(true);//当设置成false的时候 错误信息不显示 反之显示
}
代码很简单 不细说!大家直接看效果图:

FloatingActionButton
由于这个控件相对简单!我就直接在上面的那个布局中增加这个按钮,并把它显示在右边!
<android.support.design.widget.FloatingActionButton
android:id="@+id/button"
android:layout_width="48dp"
android:layout_gravity="right"
android:layout_height="48dp"
android:orientation="vertical" />
接着我们在看代码区域:
button.setRippleColor(Color.GRAY);//设置按下去的波纹颜色
button.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.ic_menu_add));//背景色
不解释了简单!
Snackbar
和 Toast 类似。但是它有简单的可选择的单个的Action。 同时还有个特性就是用户可以在它消失时间未到的时候,移掉它!
现在来介绍下 Snackbar 的一些函数
dismiss()用来消失 Snackbar 的getDuration()得到显示时长的make(View view, int resId, int duration)创建 Snackbar 的make(View view, CharSequence text, int duration)和上面一样setAction(int resId, View.OnClickListener listener)对 Snackbar 设置单击时间,这里的单击时间不是作用于整个 Snackbar 的,还是作用于你所设置的这个字段的,也就是这个resIdsetAction(CharSequence text, View.OnClickListener listener)和上面一样setActionTextColor(ColorStateList colors)设置动作字的颜色,就是对上面的setAction 中文字颜色的设置setActionTextColor(int color)和上面一样setDuration(int duration)设置 Snackbar 显示时常setText(int resId)更新 Snackbar 中的文本setText(CharSequence message)和上面一样show()显示 Snackbar
函数已经介绍完了!现在,我会FloatingActionButton增加一个单击事件用来显示 Snackbar 。直接看代码:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar
.make(content, "你好啊", Snackbar.LENGTH_LONG)
.setAction("delete", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "delete", Toast.LENGTH_SHORT).show();
}
})
.show();
}
});
直接看效果吧!

Tabs
选项卡,一般和 TabLayout 一起使用哦。现在我们来看一下 TabLayout 的一些函数。
addTab(TabLayout.Tab tab, int position, boolean setSelected)增加选项卡到 layout 中addTab(TabLayout.Tab tab, boolean setSelected)同上addTab(TabLayout.Tab tab)同上getTabAt(int index)得到选项卡getTabCount()得到选项卡的总个数getTabGravity()得到 tab 的 GravitygetTabMode()得到 tab 的模式getTabTextColors()得到 tab 中文本的颜色newTab()新建个 tabremoveAllTabs()移除所有的 tabremoveTab(TabLayout.Tab tab)移除指定的 tabremoveTabAt(int position)移除指定位置的 tabsetOnTabSelectedListener(TabLayout.OnTabSelectedListener onTabSelectedListener)为每个 tab 增加选择监听器setScrollPosition(int position, float positionOffset, boolean updateSelectedText)设置滚动位置setTabGravity(int gravity)设置 GravitysetTabMode(int mode)设置 ModesetTabTextColors(ColorStateList textColor)设置 tab 中文本的颜色setTabTextColors(int normalColor, int selectedColor)设置 tab 中文本的颜色 默认 选中setTabsFromPagerAdapter(PagerAdapter adapter)设置 PagerAdaptersetupWithViewPager(ViewPager viewPager)和 ViewPager 联动
函数介绍完了,现在来看代码吧!
布局代码:
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:background="#1FBCD2"
android:layout_height="48dp" />
再来看一下 onCreate(Bundle savedInstanceState) 中的方法吧
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
tabLayout= (TabLayout) findViewById(R.id.tablayout);
tabLayout.setTabTextColors(Color.WHITE, Color.GRAY);//设置文本在选中和为选中时候的颜色
tabLayout.addTab(tabLayout.newTab().setText("第一个"), true);//添加 Tab,默认选中
tabLayout.addTab(tabLayout.newTab().setText("第二个"),false);//添加 Tab,默认不选中
tabLayout.addTab(tabLayout.newTab().setText("第三个"),false);//添加 Tab,默认不选中
}
来看一下效果吧

现在 我们来把 TabLayout 和 ViewPager 连起来用
先看布局文件 我们在上面的基础上加了个ViewPager
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:background="#1FBCD2"
android:layout_height="48dp" />
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
再来看一下 onCreate(Bundle savedInstanceState) 中的方法吧
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
tvs = new ArrayList<TextView>();
for (int i = 0; i < items.length; i++) {
TextView tv = new TextView(this);
tv.setText(items[i]);
LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
tv.setTextColor(Color.BLACK);
tv.setBackgroundColor(Color.WHITE);
tv.setGravity(Gravity.CENTER);
tv.setLayoutParams(lp);
tv.setTextSize(22);
tvs.add(tv);
}
tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setTabTextColors(Color.WHITE, Color.GRAY);//设置文本在选中和为选中时候的颜色
vp = (ViewPager) findViewById(R.id.vp);
adapter = new Adapter();
vp.setAdapter(adapter);
//用来设置tab的,同时也要覆写 PagerAdapter 的 CharSequence getPageTitle(int position) 方法,要不然 Tab 没有 title
tabLayout.setupWithViewPager(vp);
//关联 TabLayout viewpager
tabLayout.setTabsFromPagerAdapter(adapter);
}
看效果图:

Navigation View
大家都记得 DrawerLayout 这个控件吧!它是 android 用来体态 SlideMenu 的一个组件!在这个控件中我们通常需要一个 menu(也是个布局文件)和一个主体布局文件。现在这个 Navigation View 就是用来写 menu的!
这个控件我就不一一写函数了!我们还是直接使用吧!直接看布局文件
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="哈哈"
android:gravity="center"
android:textSize="30sp"
android:textColor="@android:color/background_dark"/>
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/my_navigation_items" />
</android.support.v4.widget.DrawerLayout>
我们直接看 NavigationView ,会发现我使用了两个新的属性 app:headerLayout 和 app:menu 这是因为这个组件把menu分为两部分,一个是头部还有一个是 menu。现在我们只需要写个新的头部和一个 menu就行啦!!这个组件我就不上图了!主要是我认为没啥意思这个组件!
剩下的组件
现在还剩下 CoordinatorLayout , CollapsingToolbarLayout 和 AppBarLayout 这三个组件!由于我对这个三个组件还没有仔细研究,在这篇博文中就不说了!下篇博文再讲!!
- CoordinatorLayout 是一个超级 FrameLayout
- CollapsingToolbarLayout 类似这张图
- AppBarLayout 全新,用来实现各种 Material Design 概念效果的一个 Layout,主要负责对滑动的响应
以上三个组件的来自 代码家 的这篇博文 Google I/O 2015 为 Android 开发者带来了哪些福利? 的解释!
结束语
不知道大家有没有好的 unity3d 学习方面的资料 求介绍啊 !!!!!!
Android Design Support Library 中控件的使用简单介绍(一)的更多相关文章
- Android Design Support Library使用详解
Android Design Support Library使用详解 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And ...
- Android开发学习之路-Android Design Support Library使用(CoordinatorLayout的使用)
效果图: 上面的这个图有两个效果是,一个是顶部的图片,在上滑之后会隐藏起来并且显示出一个ToolBar(ToolBar类似于ActionBar,但是只有ToolBar是兼容Material Desig ...
- 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...
- Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...
- Android Design Support Library: 学习CoordinatorLayout
简述 CoordinatorLayout字面意思是"协调器布局",它是Design Support Library中提供的一个超级帧布局,帮助我们实现Material Design ...
- Material Design 开发利器:Android Design Support Library 介绍
转自:https://blog.leancloud.cn/3306/ Android 5.0 Lollipop 是迄今为止最重大的一次发布,很大程度上是因为 material design —— 这是 ...
- Android Design Support Library使用详解——Snackbar
Google在2015 I/O大会上,给我们带来了更加详细的Material Design规范,同时也引入了Android Design Support Library,为我们提供了基于Materia ...
- Android Design Support Library——Navigation View
前沿 Android 从5.0开始引入了Material design元素的设计,这种新的设计语言让整个安卓的用户体验焕然一新,google在Android Design Support Librar ...
- Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
此文的代码在Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果代码的基础上进行修改,如果你没有看过本系列的第一篇文章最好先看一看.Co ...
随机推荐
- C#指南,重温基础,展望远方!(8)C#数组
数组是一种数据结构,其中包含许多通过计算索引访问的变量. 数组中的变量(亦称为数组的元素)均为同一种类型,我们将这种类型称为数组的元素类型. 数组类型是引用类型,声明数组变量只是为引用数组实例预留空间 ...
- WPF 流文档
WPF文本显示: WPF面向的是UI展现,而文本显示无疑是UI层中的重要功能之中的一个.WPF提供了XPS (XML 文件规范) 和Flow Document (流文档) 来在不同的场景下展现或者操作 ...
- 用bcdedit.exe重建bcd
使用下面方法之前需要bcdedit.exe和bootsect.exe两个文件,bootsect.exe文件在vista和windows 7的安装光盘的boot目录下,而bcdedit.exe文件可以在 ...
- informix遇到错误 25571:Cannot create an user thread
今天发现informix数据库不能用dbaccess访问,报错: 25571: Cannot create an user thread. On NT check username, and IX ...
- Hadoop-2.2.0中文文档—— Shell命令
FS Shell 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args>的形式. 全部的的FS shell命令使用URI路径作为參数.URI格式是scheme: ...
- eclipse配置 嵌入式-基于linux
Eclipse可以安装在各种操作系统.这里是安装到Ubuntu 10.10上.有两种方法实现安装,一是采用Ubuntu的软件源:二是从官方下载后解压. 1. 通过Ubuntu软件源安装 $ sudo ...
- QT 中设置按钮图片和文字的两种方法
1.使用QpushButton自带的API实现: void setIcon(const QIcon &icon) void setText(const QString &text) 该 ...
- jquery 情况form表单的所有内容
#project_file_upload 为表单的id $(':input','#project_file_upload') .not(':button, :submit, :reset, :hidd ...
- 基础地图Android SDK
开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-21级,所包含的信息有建筑物.道路.河流.学校.公园等内容. V3.7.0起,地图支持缩放至21级 ...
- hive 中与mysql 中函数同名不同意的方法记录
max 函数 在hive中max函数是一个聚合函数,所以,而且返回值是double ,而且后面必须跟group by ,这个和mysql差异很大 Built-in Aggregate Function ...