Android 自定義Toast及BUG
寫這篇文章算是一個總結吧,總結一些使用Toast過程中出現的問題。
Toast彈框的優點在於使用起來方便,但是使用的時候還是有些細節需要注意。
1.自定義Toast
需求:需要展示一個有樣式的提示彈框。那麼有人就會問,用Dialog來做不行嗎?用Dialog來做也行,但是一般的情況下Dialog無法再展示的情況下去點選Activity觸發事件,所以這種情況下最簡單的做法就是自定義Toast
public class MyTipsToast { public void show(Context context, String message){ final Toast toast = new Toast(context.getApplicationContext()); View contentView = LayoutInflater.from(context).inflate(R.layout.test,null); TextView textView = contentView.findViewById(R.id.tv); if (!StringUtils.isEmpty(message)){ textView.setText(message); toast.setView(contentView); toast.setDuration(Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP,0,36); toast.show(); } } }
最後,建議在自定義toast中不要做事件,提示框僅僅為了顯示資訊,如果想要處理事件,使用對話方塊更合適。
2.多個Toast快速顯示的BUG
在展示Toast比較多的情況下基本都會遇到一個問題,關於這個問題,當然不同的機型會出現不同的結果。
比如一些手機,在快速點選彈出Toast的時候,下一條彈出時,會強制關閉上一條,這樣當然是沒有任何問題的,但是有些手機,下一條會等上一條消失後再彈出,這樣時間就會累計起來,彈出多的情況會導致使用者覺得Toast一直不消失,而且還沒有辦法互動性的讓它消失。針對這種機型的Toast,我們需要做適配。
當然這種適配方案網上也有挺多,這裡就不寫出來了,百度一大堆,但是我在試的時候,感覺效果不是很好,所以我自己寫了一種適配方案。
public class ToastUtils { private static Context mContext; private static List<Toast> toastList; public static void init(Context context){ mContext = context; toastList = new ArrayList<>(); } public static void show(String str){ if (mContext == null){ return; } Toast toast = Toast.makeText(mContext, str, Toast.LENGTH_SHORT); toastList.add(toast); if (toastList.size() > 1){ Toast toast1 = toastList.get(0); toastList.remove(0); toast1.cancel(); toast1 = null; } toast.show(); } }
比較投機取巧的方法,用List儲存當前正在顯示的Toast,當下個Toast展示的時候,先cancel掉前一個。只不過這樣寫可能會有個不好的地方是,點得快的時候,會一直替換內容,太快可能會導致使用者沒看清之前顯示的內容是什麼。但是這個也好解決,你可以在show的時候加一個延時操作,我這裡就不演示了。
作者:鍵盤上的麒麟臂
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2821999/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android中自定義Toast文字大小AndroidAST
- 自定義Toast的背景顏色大小及字型大小AST
- mui toast自定義樣式UIAST
- 自定義Toast樣式+改變Toast寬高AST
- uni-app 自定義loading 自定義toast 相容小程式&APPAPPAST
- 微信開發之自定義元件(Toast)元件AST
- 百度小程式自定義通用toast元件AST元件
- Android圖解建立外部lib庫及自定義ViewAndroid圖解View
- android自定義view(自定義數字鍵盤)AndroidView
- 【朝花夕拾】Android自定義View篇之(四)自定義View的三種實現方式及自定義屬性詳解AndroidView
- Android自定義View整合AndroidView
- Android自定義遮罩層Android遮罩
- 自定義Android鍵盤Android
- Android自定義OnTouch事件Android事件
- Android 自定義UI元件AndroidUI元件
- android 自定義鍵盤Android
- (轉)Android 自定義Dialog實現步驟及封裝Android封裝
- 【朝花夕拾】Android自定義View篇之(十)TouchSlop及VelocityTrackerAndroidView
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- 重拾Android自定義ViewAndroidView
- Android自定義View:ViewGroup(三)AndroidView
- Android自定義View:View(二)AndroidView
- Android 自定義 View 之 LeavesLoadingAndroidView
- Android自定義拍照實現Android
- Android自定義View之分貝儀AndroidView
- Android自定義View之捲尺AndroidView
- Android 自定義優雅的BezierSeekBarAndroid
- 自定義Android Studio程式碼模板Android
- Android自定義View注意事項AndroidView
- Android自定義View-卷軸AndroidView
- Android自定義View 水波氣泡AndroidView
- Android 自定義View 點贊效果AndroidView
- Android 自定義View基礎(一)AndroidView
- android自定義View——座標系AndroidView
- Android自定義數字鍵盤Android
- Android技術分享| 自定義LayoutManagerAndroid
- Android 端如何新增自定義表情Android
- Android 好用的自定義元件、框架Android元件框架