您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何在Android中實現彩色Toast,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Toast有一個setView方法,通過它我們可以設置自定義的布局,這里我只是加入了改變背景色,如果你有其它需求,比如加上圖標也是可以的。
布局文件:一個FrameLayout和顯示消息的TextView
<?xml version="." encoding="utf-"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/toast_message" android:layout_width="wrap_content" android:layout_height="dp" android:paddingStart="dp" android:paddingEnd="dp" android:gravity="center" android:textSize="sp" tools:text="This is a toast message" /> </FrameLayout>
2.Java代碼:
用LayoutInflater來加載布局,然后用setView將布局設置為Toast的根View,通過自定義方法來設置Toast的消息和背景色,這里背景色是給TextView設置的,假如你想加上圖標和其它元素,通過findViewById來設置即可。
這里我用的是GradientDrawable來作為Toast的背景,setColor方法背景色,setCornerRadius設置圓角半徑,最后將他作為TextView的背景就可以了。如果你不想用它,也可以直接使用xml文件來作為背景,不過這樣就不方便靈活設置顏色了。
package com.cloud.customviews; import android.content.Context; import android.graphics.drawable.GradientDrawable; import android.support.annotation.ColorRes; import android.support.annotation.IntDef; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class ColoredToast extends Toast { @IntDef(value = { LENGTH_SHORT, LENGTH_LONG }) @interface Duration {} private ColoredToast(Context context) { super(context); } public static class Maker { private Context mContext; private ColoredToast mToast; private View mToastView; private TextView mTextMessage; public Maker(Context context) { mContext = context; mToast = new ColoredToast(context); mToastView = LayoutInflater.from(context).inflate(R.layout.toast_colored, null); mTextMessage = mToastView.findViewById(R.id.toast_message); } /** * Set text color and background color for toast by resource id */ public Maker setColor(@ColorRes int textColor, @ColorRes int backgroundColor) { GradientDrawable drawable = new GradientDrawable(); drawable.setColor(mContext.getColor(backgroundColor)); drawable.setCornerRadius(mTextMessage.getLayoutParams().height / ); mToastView.setBackground(drawable); mTextMessage.setTextColor(mContext.getColor(textColor)); return this; } /** * Set position * @see android.view.Gravity */ public Maker setGravity(int gravity, int xOffset, int yOffset) { mToast.setGravity(gravity, xOffset, yOffset); return this; } public ColoredToast makeToast(@StringRes int resId, @Duration int duration) { mTextMessage.setText(resId); mToast.setView(mToastView); mToast.setDuration(duration); return mToast; } public ColoredToast makeToast(@NonNull String text, @Duration int duration) { mTextMessage.setText(text); mToast.setView(mToastView); mToast.setDuration(duration); return mToast; } } }
Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
上述內容就是如何在Android中實現彩色Toast,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。