Android中Snackbar的介绍以及使用

……  



<android.support.design.widget.FloatingActionButton

    android:id="@+id/fab"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_gravity="bottom|end"

    android:layout_margin="@dimen/fab_margin"

    android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>




使用

--



> 在点击事件里添加弹出Snackbar



Snackbar.make(view, “您有新短消息,请注意查收。”, Snackbar.LENGTH_INDEFINITE)

                    .setAction("点击查看", new View.OnClickListener() {

                        @Override

                        public void onClick(View v) {

                            Toast.makeText(MainActivity.this, "TODO 查看消息", Toast.LENGTH_SHORT).show();

                        }

                    }).show();



方法介绍

----



*   make()



public static Snackbar make(@NonNull View view, @NonNull CharSequence text, int duration)




> 和Toast使用方法类似,第一个参数是一个view,这里是CoordinatorLayout,第二个参数是提示的内容,第三个参数是显示的时常

> 

> Snackbar.LENGTH\_INDEFINITE 是一直显示,只有右滑或者点击事件以后,可以移除

> 

> Snackbar.LENGTH\_SHORT 和Toast的显示时长属性一样

> 

> Snackbar.LENGTH\_LONG 和Toast的显示时长属性一样



*   setAction()



public Snackbar setAction(CharSequence text, final OnClickListener listener)




> 第一个参数是可点击文字内容

> 

> 第二个参数是文字的点击事件



*   show()



public void show()




> 显示Snackbar



样式设定

----



### 修改Action字体颜色



public Snackbar setActionTextColor(@ColorInt int color)




> 使用的时候直接”点”出来设置一个颜色即可



Snackbar.make(view, “您有新短消息,请注意查收。”, Snackbar.LENGTH_LONG)

    .setAction("点击查看", new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Toast.makeText(MainActivity.this, "TODO 查看消息", Toast.LENGTH_SHORT).show();

        }

    }).setActionTextColor(Color.RED).show();



### 修改描述文字的颜色



> Snackbar.class并没有给我们提供接口让我们来修改描述文字的字体颜色,如果一定要改也不是没有办法,可以获取TextView实例以后,修改字体颜色,然后再show()出来。

> 

> 定义一个修改Snackbar描述文字颜色的方法(修改字体大小等属性也是同理,很简单,不一一举例了)



public void setSnackbarMessageTextColor(Snackbar snackbar, int color) {

View view = snackbar.getView();

((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(color);

}




> **getView()**是获取到Snackbar的布局,**snackbar\_text**是描述文字的TextView的Id,没有为什么,源码就是这样定义的,下面是Snackbar的布局



<?xml version="1.0" encoding="utf-8"?>
<TextView

        android:id="@+id/snackbar_text"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_weight="1"

        android:paddingTop="@dimen/design_snackbar_padding_vertical"

        android:paddingBottom="@dimen/design_snackbar_padding_vertical"

        android:paddingLeft="@dimen/design_snackbar_padding_horizontal"

        android:paddingRight="@dimen/design_snackbar_padding_horizontal"

        android:textAppearance="@style/TextAppearance.Design.Snackbar.Message"

        android:maxLines="@integer/design_snackbar_text_max_lines"

        android:layout_gravity="center_vertical|left|start"

        android:ellipsize="end"/>



<Button

        android:id="@+id/snackbar_action"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginLeft="@dimen/design_snackbar_extra_spacing_horizontal"

        android:layout_marginStart="@dimen/design_snackbar_extra_spacing_horizontal"

        android:layout_gravity="center_vertical|right|end"

        android:paddingTop="@dimen/design_snackbar_padding_vertical"

        android:paddingBottom="@dimen/design_snackbar_padding_vertical"

        android:paddingLeft="@dimen/design_snackbar_padding_horizontal"

        android:paddingRight="@dimen/design_snackbar_padding_horizontal"

        android:visibility="gone"

        android:textColor="?attr/colorAccent"

        style="?attr/borderlessButtonStyle"/>




> 使用



Snackbar snackbar = Snackbar.make(view, “您有新短消息,请注意查收。”, Snackbar.LENGTH_LONG)

    .setAction("点击查看", new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Toast.makeText(MainActivity.this, "TODO 查看消息", Toast.LENGTH_SHORT).show();

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值