android.support.design库的一些用法
2015-10-22 10:48
555 查看
开始之前做一下准备工作,就是把sdk manager里的android support library升级到最新,我目前最新的版本为23.0.1,看看sdk目录里有没有这个文件夹:如下图:
有的话,说明下载时ok的,然后在app的build.gradle的dependencies节点下配置如下一行代码,即可把design支持包添加到项目中,如下图:
ok,准备工作做好之后,就可以使用该支持包里的相关组件了.
1,Snackbar
和Toast类似:Toast不能响应任何事件,但是可以控制显示的位置.
Snackbar不能控制显示的位置,它只能显示在屏幕的底部,但是却可以响应点击事件,界面比Toast好看多了,并且控制它的界面也较为简单,
Snackbar的显示方式和Toast类似,都是利用makeText().show()来显示,若要让Snackbar响应点击事件,必须设置一个action,这是与Toast不同的地方,还有一个地方不同,那就是:makeText()的第一个参数不同,Toast的第一个参数为上下文,而Snackbar的第一个参数为View类型的参数,这个参数应该为触发Snackbar显示的view.
Snackbar还有一些自己的独有方法:如下:
(1),setAction(java.lang.CharSequence text, @Nullable android.view.View.OnClickListener listener):用来响应点击事件
(2)isShown(): Snackbar是否正在显示
(3)setActionTextColor(android.content.res.ColorStateList colors):用来设置setAction()方法中第一个参数的颜色
(4)setText():用来设置Snackbar的提示文本,若设置这个属性,则会覆盖Snackbar.makeText()第二个参数的内容
(5)setDuration();用来设置Snackbar显示的时长,若设置该属性,则会覆盖Snackbar.makeText()第三个参数的内容
(6)setCallback():用来设置Snackbar的回调函数,有两个方法需要重写第一个为:onShown()当Snackbar正在显示时调用,第二个为onDismissed()当Snackbar消失时调用
下面为具体的代码:
2,android.support.design.widget.NavigationView 基本用法
这个类主要和android.support.v4.widget.DrawerLayout一起搭配使用,实现侧滑菜单效果,直接上代码吧,这样最直观.
同时可以在android.support.design.widget.NavigationView控件里控制android:layout_width="",进而来控制侧滑菜单的宽度,这样简单的几个布局文件就实现了侧滑菜单效果,来张效果图吧:
若要对侧滑菜单里的相关项进行控制怎么做呢,首先头布局很简单,因为头布局加载的是layout,所以监听事件直接找到相关的控件,然后设置监听即可,
那么怎么控制下方的每条item的监听事件呢,官方早就帮我们想好了,还是直接上代码吧:如下:
利用navigation.setNavigationItemSelectedListener()即可对item设置监听,上个效果图:
上面Snackbar的点击功能为:当点击Snackbar的"知道了"按钮之后,就会关闭侧滑菜单.
有的话,说明下载时ok的,然后在app的build.gradle的dependencies节点下配置如下一行代码,即可把design支持包添加到项目中,如下图:
ok,准备工作做好之后,就可以使用该支持包里的相关组件了.
1,Snackbar
和Toast类似:Toast不能响应任何事件,但是可以控制显示的位置.
Snackbar不能控制显示的位置,它只能显示在屏幕的底部,但是却可以响应点击事件,界面比Toast好看多了,并且控制它的界面也较为简单,
Snackbar的显示方式和Toast类似,都是利用makeText().show()来显示,若要让Snackbar响应点击事件,必须设置一个action,这是与Toast不同的地方,还有一个地方不同,那就是:makeText()的第一个参数不同,Toast的第一个参数为上下文,而Snackbar的第一个参数为View类型的参数,这个参数应该为触发Snackbar显示的view.
Snackbar还有一些自己的独有方法:如下:
(1),setAction(java.lang.CharSequence text, @Nullable android.view.View.OnClickListener listener):用来响应点击事件
(2)isShown(): Snackbar是否正在显示
(3)setActionTextColor(android.content.res.ColorStateList colors):用来设置setAction()方法中第一个参数的颜色
(4)setText():用来设置Snackbar的提示文本,若设置这个属性,则会覆盖Snackbar.makeText()第二个参数的内容
(5)setDuration();用来设置Snackbar显示的时长,若设置该属性,则会覆盖Snackbar.makeText()第三个参数的内容
(6)setCallback():用来设置Snackbar的回调函数,有两个方法需要重写第一个为:onShown()当Snackbar正在显示时调用,第二个为onDismissed()当Snackbar消失时调用
下面为具体的代码:
public void click(View view) { //View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.view_layout, null); //自己写一个布局加载进去无效,会报空指针,所以第一个参数View应该为触发Snackbar显示的View,这里为button Snackbar.make(view, "你点击了按钮", Snackbar.LENGTH_LONG).setAction("知道了", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "点击消失", Toast.LENGTH_SHORT).show(); } }).setActionTextColor(Color.YELLOW).setCallback(new Snackbar.Callback() { //当Snackbar正在显示时调用 @Override public void onShown(Snackbar snackbar) { super.onShown(snackbar); //snackbar.setActionTextColor(Color.RED); } //当Snackbar消失时调用,这个消失包括手动点击消失和时间到了自动消失 @Override public void onDismissed(Snackbar snackbar, int event) { super.onDismissed(snackbar, event); Toast.makeText(getApplicationContext(), "已经消失了", Toast.LENGTH_SHORT).show(); } }).show(); }
2,android.support.design.widget.NavigationView 基本用法
这个类主要和android.support.v4.widget.DrawerLayout一起搭配使用,实现侧滑菜单效果,直接上代码吧,这样最直观.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.widget.DrawerLayout android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <!-- 主内容布局--> <include layout="@layout/test_layout"/> <!--侧滑菜单 app:headerLayout="@layout/test1" 用于添加侧滑菜单头部布局 app:menu="@menu/menu_main" 用于添加侧滑菜单的菜单选项 这两个属性是最核心的属性--> <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/test1" app:menu="@menu/menu_main"/> </android.support.v4.widget.DrawerLayout> </LinearLayout>
同时可以在android.support.design.widget.NavigationView控件里控制android:layout_width="",进而来控制侧滑菜单的宽度,这样简单的几个布局文件就实现了侧滑菜单效果,来张效果图吧:
若要对侧滑菜单里的相关项进行控制怎么做呢,首先头布局很简单,因为头布局加载的是layout,所以监听事件直接找到相关的控件,然后设置监听即可,
那么怎么控制下方的每条item的监听事件呢,官方早就帮我们想好了,还是直接上代码吧:如下:
package com.example.administrator.designlibrarydemo; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.view.View; public class MainActivity extends AppCompatActivity { private NavigationView navigation; private DrawerLayout drawer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawer = (DrawerLayout) findViewById(R.id.drawer); navigation = (NavigationView) findViewById(R.id.navigation); navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { Snackbar.make(navigation, "你点击了" + menuItem.getTitle(), Snackbar.LENGTH_LONG).setAction("知道了", new View.OnClickListener() { @Override public void onClick(View v) { drawer.closeDrawers();//关闭侧滑菜单 } }).show(); return false; } }); } }
利用navigation.setNavigationItemSelectedListener()即可对item设置监听,上个效果图:
上面Snackbar的点击功能为:当点击Snackbar的"知道了"按钮之后,就会关闭侧滑菜单.
相关文章推荐
- android开发真机调试(MAC环境下)
- Android中事件分发机制详解
- android MTK驱动背光唤醒流程
- Android Studio 错误: 非法字符: '\ufeff' 及 Gradle不能自动查找xml自定义属性
- Android 序列化比对
- Android开发-调用系统隐藏API
- Android教程 -06 Activity的生命周期
- Android教程 -06 Activity的生命周期
- [转]Android进程间通信
- android 自定义toast 开源项目
- android 的四种枚举
- Android开发手记(14) 使用MediaPlayer播放mp3
- android 中 任务、进程和线程的区别
- android Uri获取真实路径转换成File的方法
- Android Gradle实用技巧——多渠道打包
- [转]android ANR产生原因和解决办法
- android Titlebar一行代码实现沉浸式效果
- android Titlebar一行代码实现沉浸式效果
- android Titlebar一行代码实现沉浸式效果
- NullPointerException at android.widget.AbsListView.obtainView.