前言
Toast是一個滿好用的東西,會在畫面上彈出一個短暫訊息,而且不會影響Activity處理程序,當時間到達時Toast會自動消失(預設2、3.5秒),它能拿來當作一些簡單訊息的傳遞,例如「密碼錯誤」、「您點擊了XX選項」等等,是一個非常實用的功能。
1.Toast 基本用法
Toast的用法非常簡單幾乎,直接用程式碼來講解最快。
public static Toast makeText (Context context, CharSequence text, int duration)
第一個參數 Context :應用程式的Context
第二個參數 CharSequence :要顯字的訊息文字
第三個參數 duration :Toast的顯示持續時間,這邊官方只提供兩個選擇
- Toast.LENGTH_SHORT持續2秒
- Toast.LENGTH_LONG 持續 3.5秒
1 2 3 4 5 6 7 8 9 10 11 12 |
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(this, "Toast 基本用法", Toast.LENGTH_LONG).show(); } } |
2.改變Toast顯示位置
public void setGravity (int gravity, int xOffset, int yOffset)
第一個參數 gravity: Toast起始位置
- Gravity.TOP :上
- Gravity.BOTTOM:下
- Gravity.LEFT :左
- Gravity.RIGHT :右
- Gravity.CENTER :中
第二個參數 xOffset:X座標篇移值 (正數靠右、負數靠左)
第三個參數 yOffset:Y座標篇移值 (正數靠下、負數靠上)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast toast = Toast.makeText(this, "Toast置中顯示", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER,0,0); // toast.setGravity(Gravity.BOTTOM|Gravity.RIGHT,0,0); //靠右下用法 toast.show(); } } |
3.Toast客製化
如果覺得Toast樣式這邊也提供一個客製化方法,就是新增一個Layout設計成你想要的畫面,再把這個Layout Set給Toast,以下直接看範例。
toast_view.xml:Toast客製化介面
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="test.com.myapplication.MainActivity"> </RelativeLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toast_layoutt" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#CCEEF5" android:orientation="vertical" android:padding="8dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" android:layout_gravity="center_horizontal" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/black" android:textSize="26sp" android:layout_gravity="center_horizontal" /> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //把xml的資源轉成view LayoutInflater inflater = getLayoutInflater(); //R.layout.toast_view XML名稱 //R.id.toast_layoutt XML裡面Layout ID View layout = inflater.inflate(R.layout.toast_view, (ViewGroup) findViewById(R.id.toast_layoutt)); //透過 inflater跟View方式來取得元件的控制權 TextView text = (TextView) layout.findViewById(R.id.text); text.setText("Toast客製化"); Toast toast = Toast.makeText(this, "Toast置中顯示", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER,0,0); toast.setView(layout); toast.show(); } } |