SnackBar是一个和Toast相似的空间,用于弹出提示做用,可是相比于Toast而已,SnackBar会有一个不错的动画效果,同时当手指完成屏幕中其余操做的时候,SnackBar会当即消失。同时能够为SnackBar设置一个按钮点击事件,效果以下图所示(图片引用:http://www.tuicool.com/articles/BfEbMvB)android
而同时SnackBar使用方式也与Toast相似:ide
1 public class SnackBarDemo extends Activity{ 2 private CoordinatorLayout layout; 3 private Button btn; 4 private LinearLayout layout_m; 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.snackbar); 9 layout= (CoordinatorLayout) findViewById(R.id.layout); 10 layout_m= (LinearLayout) findViewById(R.id.layout_m); 11 btn= (Button) findViewById(R.id.btn); 12 btn.setOnClickListener(new View.OnClickListener() { 13 @Override 14 public void onClick(View v) { 15 Snackbar.make(layout_m,"哈哈哈",Snackbar.LENGTH_SHORT).setAction("action", new View.OnClickListener() { 16 @Override 17 public void onClick(View v) { 18 19 } 20 }).show(); 21 } 22 }); 23 } 24 }
以上代码就能够完成Snackbar的显示,同时setAction函数就是为了给Snackbar设置按钮和点击事件,这个是可选内容。函数
同时另外一个方面就是如何修改Snackbar颜色的问题,下面是Snackbar类库中有关的布局文件:布局
1 <merge xmlns:android="http://schemas.android.com/apk/res/android"> 2 3 <TextView 4 android:id="@+id/snackbar_text" 5 android:layout_width="wrap_content" 6 android:layout_height="wrap_content" 7 android:layout_weight="1" 8 android:paddingTop="@dimen/snackbar_padding_vertical" 9 android:paddingBottom="@dimen/snackbar_padding_vertical" 10 android:paddingLeft="@dimen/snackbar_padding_horizontal" 11 android:paddingRight="@dimen/snackbar_padding_horizontal" 12 android:textAppearance="@style/TextAppearance.Design.Snackbar.Message" 13 android:maxLines="@integer/snackbar_text_max_lines" 14 android:layout_gravity="center_vertical|left|start" 15 android:ellipsize="end"/> 16 17 <TextView 18 android:id="@+id/snackbar_action" 19 android:layout_width="wrap_content" 20 android:layout_height="wrap_content" 21 android:layout_marginLeft="@dimen/snackbar_extra_spacing_horizontal" 22 android:layout_marginStart="@dimen/snackbar_extra_spacing_horizontal" 23 android:layout_gravity="center_vertical|right|end" 24 android:background="?attr/selectableItemBackground" 25 android:paddingTop="@dimen/snackbar_padding_vertical" 26 android:paddingBottom="@dimen/snackbar_padding_vertical" 27 android:paddingLeft="@dimen/snackbar_padding_horizontal" 28 android:paddingRight="@dimen/snackbar_padding_horizontal" 29 android:visibility="gone" 30 android:textAppearance="@style/TextAppearance.Design.Snackbar.Action"/> 31 32 </merge>
能够发现,其实Snackbar就是两个TextView,可是因为代码的封装性,咱们没有办法直接修改其中的样式,这个时候咱们能够使用getView()来取得相应的控件并修改其样式:动画
1 public static void setSnackbarMessageTextColor(Snackbar snackbar, int color) { 2 View view = snackbar.getView(); 3 ((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(color); 4 }
在实例化Snackbar的时候调用改函数就能够了:ui
1 Snackbar snackbar = 2 Snackbar.make(container, "SnackbarTest", Snackbar.LENGTH_LONG).setAction("Action", new View.OnClickListener() { 3 @Override 4 public void onClick(View v) { 5 Snackbar snackbar = 6 Snackbar.make(container, "ActionClick", Snackbar.LENGTH_LONG); 7 setSnackbarMessageTextColor(snackbar,Color.parseColor("#FF0000")); 8 snackbar.show(); 9 } 10 }); 11 setSnackbarMessageTextColor(snackbar, Color.parseColor("#FFFFFF")); 12 snackbar.show();