Snackbar的使用,设置背景颜色,字体属性等

Snackbar类似于Toast,不同之处在于Snackbar显示于底部,覆盖式显示。
其优点如下:
1. 配合CoordinatorLayout使用,SnackBar可以被Swipe手势划走;
2. setAction功能.在SnackBar上可以设定一个按钮。

相比于Toast不足之处:
由于Snackbar的类用final申明了,因此你无法通过继承来重写里面的一些方法,同时Snackbar没有提供setView方法,因此你无法定义自己想要的Snackbar布局,同时也没有提供直接改变背景颜色等属性的方法。

使用方法如下

准备:
导入对应的库
这里写图片描述

具体实现:
1.显示一个默认的Snackbar,想显示Toast一样简单

属性说明:

  • make()方法的第一个参数是一个view,snackbar会试着寻找一个父view来hold这个view。Snackbar将遍历整个view tree来寻找一个合适的父view,它可能是一个coordinatorLayout也可能是window decor’s content view,随便哪一个都行。

  • 正如上面所提到,duration参数和Toast中的duration参数类似,只能是LENGTH_SHORT 或
    LENGTH_LONG,不能是其它任何随机数。

实现:

Snackbar.make(view,"Hello Snackbar",Snackbar.LENGTH_LONG).show();

显示效果:
这里写图片描述

2.显示一个带按钮的Snackbar
实现:

Snackbar snackbar = Snackbar.make(view,"Hello Snackbar",Snackbar.LENGTH_LONG);
//设置按钮,名字为click
snackbar.setAction("click", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getBaseContext(),"action clicked",Toast.LENGTH_SHORT).show();
            }
        });

显示效果:
这里写图片描述

3.你可能觉得不够好看,想改变背景颜色,或者字体的颜色的属性,那么请看如下实现

实现:
设置click的字体颜色

snackbar.setActionTextColor(Color.BLUE);

设置Snackbar的背景颜色

View mView = snackbar.getView();
mView.setBackgroundColor(Color.BLUE);

设置内容字体的颜色,大小

//click的字体颜色
snackbar.setActionTextColor(Color.GREEN);
//内容的字体颜色与大小
TextView tvSnackbarText = (TextView) mView.findViewById(android.support.design.R.id.snackbar_text);
tvSnackbarText.setText("hello world");
tvSnackbarText.setTextColor(Color.RED);
tvSnackbarText.setTextSize(30);

我们可以从Snackbar的源码中看到其View的布局文件

这里写图片描述

从而得到snackbar_text为其内容的TextView,借此我们可以来改变其属性。当然那按钮的属性也可以通过此种方法进行改变(snackbar_action 为TextView)。

显示效果
这里写图片描述

4.或许你觉得想添加滑掉功能,那么请看如下实现

只需要布局使用为CoordinatorLayout即可
实现:

<android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="bn2"
        android:text="改变背景字体等属性的Snackbar"/>
</android.support.design.widget.CoordinatorLayout>

显示效果:
这里写图片描述

ok,动手试试吧!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android Studio中使用Snackbar点击按钮带图标方式显示消息提示,需要遵循以下步骤: 1.在app/build.gradle文件中添加以下依赖项: ``` implementation 'com.android.support:design:28.0.0' ``` 这将添加支持Snackbar的Material Design库。 2.在布局文件中添加一个Button和一个Snackbar容器View: ``` <RelativeLayout android:id="@+id/main_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Show Snackbar"/> <LinearLayout android:id="@+id/snackbar_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"/> </RelativeLayout> ``` 3.在Activity中获取Button和Snackbar容器View的引用: ``` Button myButton = findViewById(R.id.my_button); View snackbarContainer = findViewById(R.id.snackbar_container); ``` 4.在Button的onClick事件中,创建Snackbar实例并设置消息内容和图标: ``` myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar snackbar = Snackbar.make(snackbarContainer, "This is a Snackbar message", Snackbar.LENGTH_LONG); //设置Snackbar中的图标 Drawable icon = getResources().getDrawable(R.drawable.ic_info_outline); icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); TextView textView = snackbar.getView().findViewById(android.support.design.R.id.snackbar_text); textView.setCompoundDrawables(icon, null, null, null); textView.setCompoundDrawablePadding(getResources().getDimensionPixelOffset(R.dimen.snackbar_icon_padding)); snackbar.show(); } }); ``` 这将创建一个Snackbar实例,将其附加到Snackbar容器View中,并在Snackbar消息中添加一个带有指定图标的TextView。 现在,当用户点击按钮时,Snackbar将显示在屏幕底部,并显示指定的消息和图标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值