首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 自定義 Toast 封裝工具類:靜態方法一行調用

     編輯:程式設計綜合問答

封裝目標

將含圖文、超連結的複雜 Toast 封裝為工具類,任意 Activity 一行調用:
MyToast.show(context, "訊息", R.drawable.icon);

完整實現

public class MyToast {
    public static void show(Context context, String text, @DrawableRes int iconRes) {
        // 1. 建立自定義視圖
        LinearLayout layout = new LinearLayout(context);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        layout.setPadding(16, 16, 16, 16);
        layout.setBackgroundColor(Color.parseColor("#333333"));

        // 2. 圖示
        ImageView iv = new ImageView(context);
        iv.setImageResource(iconRes);
        iv.setLayoutParams(new LinearLayout.LayoutParams(48, 48));
        layout.addView(iv);

        // 3. 文字 (支援連結)
        TextView tv = new TextView(context);
        tv.setText(text);
        tv.setTextColor(Color.WHITE);
        tv.setTextSize(16);
        Linkify.addLinks(tv, Linkify.WEB_URLS | Linkify.PHONE_NUMBERS | Linkify.EMAIL_ADDRESSES);
        LinearLayout.LayoutParams tvParams = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT);
        tvParams.weight = 1;
        tvParams.setMarginStart(16);
        tv.setLayoutParams(tvParams);
        layout.addView(tv);

        // 4. 建立並顯示 Toast
        Toast toast = new Toast(context);
        toast.setView(layout);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 100);
        toast.show();
    }
}

調用範例

button.setOnClickListener(v -> 
    MyToast.show(MainActivity.this, "歡迎訪問 https://example.com", R.drawable.ic_launcher)
);

進階擴充建議

  • 支援自定義顏色、字型、顯示位置、動畫。
  • 加入 `showLong`/`showShort` 便利方法。
  • 使用 `LayoutInflater.inflate(R.layout.custom_toast, null)` 取代程式碼建構視圖,利於維護。
  • 單例模式複用 Toast 物件,避免連續點擊疊加顯示。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved