SnackBar的使用


What is Snackbar?

Snackbar是Android Support Design Library庫中的一個控件,效果是可以在屏幕底部彈出消息,作用與使用方法都與Toast類似。(圖見下文啦)

使用套路

1.Snackbar需要引入com.android.support:design庫

打開module對應的gradle.build文件,在dependencies中添加這一行語句(后面的版本號按需改變)

compile 'com.android.support:design:23.3.0'

2.Snackbar普通用法

Sanckbar的原型為

Snackbar.make(view,"this is message",showtime).setAction("ActionName",ction).show();

用起來可以是這樣

 Snackbar.make(view,"This is normal SnackBar Msg",Snackbar.LENGTH_SHORT)
                        .setAction("ActionName", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(SnackBarActivity.this,"You clicked SnackBar Action",Toast.LENGTH_SHORT).show();
                            }
                        }).show();

效果如下(左側為message,右側為可以響應的action按鈕)


還可以通過setActionTextColor方法來修改action文件的顏色

自定義Snackbar

Snackbar用起來是夠簡單的,但是花樣不多啊,Snackbar沒有提供其他改變樣式的函數,所以我們就diy吧
據說這是Snackbar的布局文件

<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
        android:id="@+id/snackbar_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingTop="14dp"
        android:paddingBottom="14dp"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:textAppearance="@style/TextAppearance.Design.Snackbar.Message"
        android:maxLines="2"
        android:layout_gravity="center_vertical|left|start"
        android:ellipsize="end"
        android:textAlignment="viewStart"/>

<Button
        android:id="@+id/snackbar_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="0dp"
        android:layout_marginStart="0dp"
        android:layout_gravity="center_vertical|right|end"
        android:paddingTop="14dp"
        android:paddingBottom="14dp"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:visibility="gone"
        android:textColor="?attr/colorAccent"
        style="?attr/borderlessButtonStyle"/>
</merge>

根據以上布局,有一個TextView和一個Button,很明顯TextView對應Snackbar的Message,Button對應右側的Action,那么這樣就好吧辦了,通過findViewById獲取到TextView控件的引用,然后就可以"為所欲為"啦。
來個簡單的例子

 Snackbar snackbar=Snackbar.make(v,"This is normal SnackBar Msg",Snackbar.LENGTH_SHORT)
                        .setAction("ActionName", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(SnackBarActivity.this,"You clicked SnackBar Action",Toast.LENGTH_SHORT).show();
                            }
                        });

                snackbar.setActionTextColor(Color.YELLOW);//設置action顏色
                View view=snackbar.getView();
                view.setBackgroundColor(Color.GRAY);//設置背景顏色
                TextView msg= (TextView) view.findViewById(R.id.snackbar_text);
                msg.setTextColor(Color.GREEN);//設置左側message顏色
                snackbar.show();

效果

其他的玩法

還可以在Snackbar里面添加圖標,以后繼續。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM