訊息模式Toast.makeText的幾種常見用法
阿新 • • 發佈:2019-01-29
轉載自:http://daikainan.iteye.com/blog/1405575
Toast 是一個 View 檢視,快速的為使用者顯示少量的資訊。 Toast 在應用程式上浮動顯示資訊給使用者,它永遠不會獲得焦點,不影響使用者的輸入等操作,主要用於 一些幫助 / 提示。
Toast 最常見的建立方式是使用靜態方法 Toast.makeText
我使用的是 SDK 2.2
1. 預設的顯示方式
java程式碼
2.自定義顯示位置/* * 第一個引數:當前上下午的環境。可用getApplicationContext()或this * 第二個引數:要顯示的字串 * 第三個引數:顯示時間的長短。Toast有預設的兩個LENGTH_SHORT(短)和LENGTH_LONG(長),也可以使用毫秒2000ms * */ Toast.makeText(MainActivity.this,"zheyao",Toast.LENGTH_SHORT).show();
java程式碼
3.帶圖片的Toast toast=Toast.makeText(getApplicationContext(), "自定義顯示位置的Toast", Toast.LENGTH_SHORT); //第一個引數:設定toast在螢幕中顯示的位置。我現在的設定是居中靠頂 //第二個引數:相對於第一個引數設定toast位置的橫向X軸的偏移量,正數向右偏移,負數向左偏移 //第三個引數:同的第二個引數道理一樣 //如果你設定的偏移量超過了螢幕的範圍,toast將在螢幕內靠近超出的那個邊界顯示 toast.setGravity(Gravity.TOP|Gravity.CENTER, -50, 100); //螢幕居中顯示,X軸和Y軸偏移量都是0 //toast.setGravity(Gravity.CENTER, 0, 0); toast.show();
java程式碼
Toast toast=Toast.makeText(getApplicationContext(), "顯示帶圖片的toast", 3000); toast.setGravity(Gravity.CENTER, 0, 0); //建立圖片檢視物件 ImageView imageView= new ImageView(getApplicationContext()); //設定圖片 imageView.setImageResource(R.drawable.ic_launcher); //獲得toast的佈局 LinearLayout toastView = (LinearLayout) toast.getView(); //設定此佈局為橫向的 toastView.setOrientation(LinearLayout.HORIZONTAL); //將ImageView在加入到此佈局中的第一個位置 toastView.addView(imageView, 0); toast.show();
4.自定義顯示方式
java程式碼
//Inflater意思是充氣
//LayoutInflater這個類用來例項化XML檔案到其相應的檢視物件的佈局
LayoutInflater inflater = getLayoutInflater();
//通過制定XML檔案及佈局ID來填充一個檢視物件
View layout = inflater.inflate(R.layout.custom2,(ViewGroup)findViewById(R.id.llToast));
ImageView image = (ImageView) layout.findViewById(R.id.tvImageToast);
//設定佈局中圖片檢視中圖片
image.setImageResource(R.drawable.ic_launcher);
TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
//設定標題
title.setText("標題欄");
TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
//設定內容
text.setText("完全自定義Toast");
Toast toast= new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER , 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
5.其他執行緒通過Handlerd 呼叫
java程式碼
//呼叫方法1
//Thread th=new Thread(this);
//th.start();
//呼叫方法2
handler.post(new Runnable() {
@Override
public void run() {
showToast();
}
});
程式碼 public void showToast(){
Toast toast=Toast.makeText(getApplicationContext(), "Toast在其他執行緒中呼叫顯示", Toast.LENGTH_SHORT);
toast.show();
}
程式碼Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
int what=msg.what;
switch (what) {
case 1:
showToast();
break;
default:
break;
}
super.handleMessage(msg);
}
};
程式碼@Override
public void run() {
handler.sendEmptyMessage(1);
}