SnackBar 笔记(一)基本使用

来源:互联网 发布:淘宝恶意退款技巧 编辑:程序博客网 时间:2024/06/01 07:33
这篇文章(纯手打)能使你快速使用Snackbar,颜色、样式等花式玩转SnackBar请见下回分解
一   优点:
1. 配合CoordinatorLayout使用,SnackBar可以被Swipe手势划走;
2.可代替toast,土司不能主动消除 很烦人!而且snackbar还可以在点击时添加监听做其他一些事情
二   首先要导入:在build.gradle(Module:你的module)的dependencies标签中添加一行
compile 'com.android.support:design:22.2.0'  并进行 sync  now,如无意外情况可继续进行
 三  直接上硬菜  ,您简单做个布局
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/id_drawerlayout"    android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:id="@+id/id_framelayout"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <TextView            android:id="@+id/tv"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:padding="10dp"            android:text="我是textview" />        <EditText            android:id="@+id/et"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:hint="测试snack与键盘的冲突" />        <Button            android:id="@+id/id_btn"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="来一个SnackBar" />    </LinearLayout>    <LinearLayout        android:id="@+id/id_drawer"        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="#E0EEE0"        android:orientation="vertical">        <ListView            android:id="@+id/id_lv"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:divider="#CD853F"            android:dividerHeight="2dp" />    </LinearLayout>    <LinearLayout        android:id="@+id/id_drawer1"        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="end"        android:background="#E0EEE0"        android:orientation="vertical">        <ListView            android:id="@+id/id_lv1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:divider="#CD853F"            android:dividerHeight="2dp" />    </LinearLayout></android.support.v4.widget.DrawerLayout>

然后再activity中粘贴以下代码  直接跑起来看效果吧!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
  1. public class MainActivity extends BaseActivity {
  2. // private MyDrawer drawerLayout;
  3. private DrawerLayout drawer;
  4. private Button id_btn;
  5. private CoordinatorLayout coordinatorLayout;
  6. private TextView tv;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.slide_main);
  11. drawer = fView(R.id.drawer);
  12. id_btn = fView(R.id.id_btn);
  13. tv = fView(R.id.tv);
  14. id_btn.setOnClickListener(new View.OnClickListener() {
  15. @Override
  16. public void onClick(View v) {
  17. // 一下两行是为了隐藏键盘 防止键盘挡住snackbar
  18. InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  19. imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
  20. Snackbar.make(id_btn, "我是SnackBar", Snackbar.LENGTH_LONG).setAction("点击触发监听", new View.OnClickListener() {
  21. @Override
  22. public void onClick(View v) {
  23. tv.setText("底部通知栏被点了!");
  24. }
  25. }).show();
  26. }
  27. });
  28. }
  29. }

 
 
 
使用方法很简单,几乎和Toast没有区别.
 
make()方法的第一个参数是一个view.要想支持Swipe手势的话,这个view需要是一个CoordinatorLayout(也是在Android Support Library里面的控件)
 
setAction,用法也是一目了然.设置下显示内容string,设置一个OnClickListener.
 
SnackBar使用时候有几点需要注意:
 
1. make()方法的第一个参数的view,不能是有一个ScrollView.
因为SnackBar的实现逻辑是往这个View去addView.而ScrollView我们知道,是只能有一个Child的.否则会Exception.
 
2. 如果大家在想把Toast替换成SnackBar.需要注意的是,Toast和SnackBar的区别是,前者是悬浮在所有布局之上的包括键盘,而SnackBar是在View上直接addView的.
 
所以SnackBar.show()的时候,要注意先把Keyboard.hide()了.不然,键盘就会遮住SnackBar.
 
3. 在Android2.3,SnackBar即使用了CoordinatorLayout也是不支持Swipe功能.
 
个人觉得,这一点点小瑕疵就可以忽略啦哈哈.
 
4. 在Android2.3,SnackBar的深色背景颜色和字体颜色相近.可以用SpannableString换一下String的颜色在传给make()方法.
3 0
原创粉丝点击