• Material Design学习-----SnackBar


      SnackBar是一个和Toast类似的空间,用于弹出提示作用,但是相比于Toast而已,SnackBar会有一个不错的动画效果,同时当手指完成屏幕中其他操作的时候,SnackBar会立即消失。同时可以为SnackBar设置一个按钮点击事件,效果如下图所示(图片引用:http://www.tuicool.com/articles/BfEbMvB)

      而同时SnackBar使用方式也与Toast类似:

     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的时候调用改函数就可以了:

     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();
  • 相关阅读:
    二叉树学习随笔
    结构体初始化中的数组赋值
    C和FORTRAN的快速傅里叶/余弦/正弦变换(Fast Fourier/Cosine/Sine Transform)开源库分享
    Java简单的数组用法尝试,和C语言很不一样
    中位数( 优先队列较优处理 )
    单调队列 数组写法qwq
    P1886 滑动窗口
    Sicily 2014. Dairy Queen
    P3385 【模板】负环
    [USACO06DEC]虫洞Wormholes (负环模板)
  • 原文地址:https://www.cnblogs.com/YaoJianXun/p/5435443.html
Copyright © 2020-2023  润新知