原本的 Toast 是小小的黑色背景,在螢幕下方出現,當 Activity 的背景也是黑色的時候,會不太容易看見,這時候可以設計自己的 Toast,讓訊息明顯,以免被使用者忽略了。
原本呼叫 Toast 顯示的方法如下:
原本呼叫 Toast 顯示的方法如下:
Toast.makeText(context, "要顯示的訊息", Toast.LENGTH_LONG).show();
自製 Toast 必須用到自定的 layout。
製作的方法
這裡簡單的分為兩個步驟:- 設計 layout
- 撰寫程式碼來顯示
1.設計 layout
依照一般設計 layout 的方式,沒什麼不同,這裡的範例如下:layout/toast.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layToast"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F5CE00" >
<TextView
android:id="@+id/txtToastMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="10dp"
android:text="Toast"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#151515" />
</RelativeLayout>
背景設定為黃色,文字設定為黑色。
2.撰寫程式碼來顯示
這個範例中,我把自製吐司寫成一個工具類別方法,方便每次呼叫使用。程式碼如下:public class Utility {
public static void showToast(Activity activity, String msg){
LayoutInflater inflater = activity.getLayoutInflater();
View layout = inflater.inflate(R.layout.toast, (ViewGroup) activity.findViewById(R.id.layToast));
TextView text = (TextView) layout.findViewById(R.id.txtToastMsg);
text.setText(msg);
Toast toast = new Toast(activity);
//置中
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
//靠上
//toast.setGravity(Gravity.TOP, 0, 200);
//靠下
//toast.setGravity(Gravity.BOTTOM, 0, 100);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
}
inflate 的第一個參數是 xml 檔的名稱,第二個則為 layout 的名稱。之後就是設定訊息文字,接著是設定 Toast 要出現的位置,指定它的 Gravity 來靠上、中或下。一樣要設定顯示的時間長度,這裡指定為 Toast.LENGTH_LONG。再來就是把 layout 指定給 Toast。最後就把這個自製的 Toast 給顯示出來。現在,當需要吐司訊息時,就可以去呼叫我們的 showToast,程式碼如下:
public class MainActivity extends Activity {
private Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activity = this;
Button btnToast = (Button) findViewById(R.id.btnToast);
btnToast.setOnClickListener(toastOnClickListener);
}
private OnClickListener toastOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
Utility.showToast(activity, "這是自製吐司訊息!!");
}
};
}
完成了。如果你要更多變化,可以到參考資料中的網站去看看。範例程式碼:CustomizingToastDemo (GitHub)
參考資料
本文網址:http://blog.tonycube.com/2013/12/androidcustomizing-toast.html
由 Tony Blog 撰寫,請勿全文複製,轉載時請註明出處及連結,謝謝 😀
由 Tony Blog 撰寫,請勿全文複製,轉載時請註明出處及連結,謝謝 😀
我要留言
留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。