Android Developers:Toasts

Toast在一個小的彈窗提供一個關於操作的簡單反饋。它僅僅填充消息所需的空間,並且當前的Activity保持可見和交互。例如,在你發送一個郵件之前離開,觸發一個”Draft saved”Toast,讓你知道你稍後能繼續編輯。Toast在一段時間後自動顯示。 

如果用戶被要求顯示一個裝填消息,考慮使用一個Notification消息代替。 

 

基礎 

—————————————————————————————————————————————— 

首先,使用makeText()方法實例化一個Toast對象。這個方法獲取三個參數:應用程序Context,文本信息,和Toast持續時間。它返回一個正確實例化的Toast對象。你可以使用show()方法顯示Toast消息,如下面所示: 

[java]  

Context context = getApplicationContext();   

CharSequence text = "Hello toast!";   

int duration = Toast.LENGTH_SHORT;   

   

Toast toast = Toast.makeText(context, text, duration);   

toast.show();   

這個例子演示瞭大多數Toast通知你需要的事情。你應該很少需要什麼。你可以,然而,想把Toast放在不同的位置,或者使用你自己的佈局替代一個簡單的文本消息。下面的章節描述瞭你如何能做這些事情。 

 

你也能束縛你的方法,並避免持有Toast對象,想這樣: 

[java] 

Toast.makeText(context, text, duration).show();   

 

定位你的Toast 

————————————————————————————————————————————————————————————————————— 

標準的toast消息在屏幕的靠近底部,水平居中顯示。你能使用setGravity(int,int,int)方法改變這個位置。它接受三個參數:一個Gravity常量,一個x軸位置偏移,一個y軸偏移。 

 

例如,如果你決定這個Toast應該顯示在左上角,你可以這樣設置位置: 

[java]  

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);   

如果你想拖動這個位置到右邊,增加第二個參數的值。推動它到下面,增加最後一個參數的值。 

 

創建一個自定義的Toast視圖 

————————————————————————————————————————————————————————————————————— 

如果一個簡單的文本消息不能滿足,你能為你的Toast消息創建一個自定義的佈局。為瞭創建一個自定義的佈局,定義一個視圖佈局,在XML或者你的應用代碼中,並傳遞根視圖對象給setView(View)方法。 

 

例如,你能使用下面的XML(保存為tast_layout.xml)為Toast創建佈局,在屏幕右邊的結果可見: 

[html]  

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"   

             android:id="@+id/toast_layout_root"   

             android:orientation="horizontal"   

             android:layout_width="fill_parent"   

             android:layout_height="fill_parent"   

             android:padding="8dp"   

             android:background="#DAAA"   

             >   

   <ImageView android:src="@drawable/droid"   

              android:layout_width="wrap_content"   

              android:layout_height="wrap_content"   

              android:layout_marginRight="8dp"   

              />   

   <TextView android:id="@+id/text"   

             android:layout_width="wrap_content"   

             android:layout_height="wrap_content"   

             android:textColor="#FFF"   

             />   

</LinearLayout>   

註意,這個線性佈局元素的ID是”toast_layout”。你必須使用ID來填充來之這個XML的佈局,如下面所示: 

[java]  

LayoutInflater inflater = getLayoutInflater();   

View layout = inflater.inflate(R.layout.custom_toast,   

                              (ViewGroup) findViewById(R.id.toast_layout_root));   

   

TextView text = (TextView) layout.findViewById(R.id.text);   

text.setText("This is a custom toast");   

   

Toast toast = new Toast(getApplicationContext());   

toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);   

toast.setDuration(Toast.LENGTH_LONG);   

toast.setView(layout);   

toast.show();   

首先,使用getLayoutInflater()方法(或者getSystemService())獲取LayoutInflater,然後使用inflate(int,ViewGroup)方法從XML中填充佈局。第一個參數是佈局資源ID,並且第二個參數是根視圖。你可以使用這個填充的佈局尋找在這個佈局中的更多的視圖對象,所以現在捕捉和定義ImageView和TextVewi元素中的內容,例如位置和時間。然後調用setView(View)方法將它傳遞給填充的佈局。你現在可以通過調用show()方法使用你的自定義佈局來顯示消息。 

 

註意:除非你將使用setView(View)方法定義佈局,不要使用使用公共的構造函數構造Tost。如果你沒有一個自定義佈局來使用,你必須使用makeText(Context,int,int)方法來創建Toast。 

發佈留言