日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andorid 项目中Dialog的便捷开发,全面的样式选择.

發布時間:2024/3/24 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Andorid 项目中Dialog的便捷开发,全面的样式选择. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在最近寫的項目中,Dialog 有各種各樣的顯示問題, 無論是 用dialog ,還是 alertDialog , 都會有一系列的 黑邊, 黑底白字,全屏等 各種意外的結果,而且無論自己怎樣自定義樣式,都得不到很好的解決.經過一段時間的研究,嘗試. 自己得出了自己的解決辦法. 供大家參考使用.

首先,來普及一下Dialog 的基礎知識,Dialog 是一種基于容器的對話框


已知的直接子類

AppCompatDialog 基類AppCompat主題對話框。

CharacterPickerDialog 對話框選擇重音字符相關的基本性格。

MediaRouteChooserDialog 這個類實現MediaRouter的路線選擇器對話框。

已知的間接子類(支持包)

AlertDialog 一個子類可以顯示一個對話框,兩個或三個按鈕。

DatePickerDialog 一個簡單的對話框包含一個DatePicker。

MediaRouteControllerDialog這個類實現了路由控制器MediaRouter對話框。

ProgressDialog一個對話框顯示一個進度指示器和一個可選的文本消息或視圖。

TimePickerDialog一個對話框,提示用戶使用TimePicker每天的時間。


以上的dialog ,在項目應用的過程中,會由于項目主題,或者尺寸等問題,出現不良的用戶體驗, 下面 我們一起來看一下.

1. 選擇改變dialog主題樣式

Dialog baseDialog = new Dialog(context, R.style.default_dialog_style);

然后在style.xml 中修改樣式即可,當然樣式可選擇繼承 其他的dialog ,大家可以參考下,當然還有字體的相關設定.

<style name="default_dialog_style"><item name="android:windowIsFloating">true</item><!--是否懸浮--> <item name="android:windowIsTranslucent">true</item><!--背景是否半透明--> <item name="android:windowFrame">@null</item><!--DialogwindowFrame框為無--> <item name="android:windowNoTitle">true</item><!--Dialog無標題--> <item name="android:windowBackground">@android:color/transparent</item> <!--背景為透明色--> <item name="android:windowContentOverlay">@null</item><!-- 設置窗體內容背景--> <item name="android:radius">5dp</item><!--邊角弧度--> <item name="windowBackground"> 窗體的背景 </item><item name="windowFullscreen">false</item> 是否為全屏 <item name="windowOverscan">false</item> 是否要求窗體鋪滿整屏幕 <item name="windowShowWallpaper">false</item> 是否顯示壁紙 <item name="windowTitleStyle">@android :style/WindowTitle</item> 窗體的標題欄Style<item name="windowTitleSize">25dip</item> 窗體文字大小 <item name="android:backgroundDimEnabled">false</item>: 背景是否模糊顯示 <!--操作類--> <item name="windowCloseOnTouchOutside">false</item><!--點擊窗體外,是否消失--> </style> ?

2.當設定好主題后, 我們可以在 自己的dilaog 中 自定義View 來實現相關彈窗(這里的inflate 有三種寫法,這里只寫一種).

LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.dialog_base, null); baseDialog.setContentView(v);

要注意的是,在這里的view 中 ,在設置邊框的時候,可能有些邊框之類的,不會被顯示,那還是得在你的view 中添加好margin,才會顯示.


3.第三步,需要在代碼里來進行相關設定(包括第二步的內容), 在我們 寫項目中 dialog 要在utils 類中新建一個專門的類方便進行管理.我用類名DialogFactory, 在這里面寫上方法

良好的封裝,能夠讓代碼得到重復利用~

public static Dialog createBaseCustomDialog(Context context, String title, String text,View.OnClickListener onClickListener) {Dialog baseDialog = new Dialog(context, R.style.default_dialog_style);LayoutInflater inflater = LayoutInflater.from(context);View v = inflater.inflate(R.layout.dialog_base, null);baseDialog.setContentView(v);TextView titleTv = (TextView) v.findViewById(R.id.dialog_base_title_tv);TextView textTv = (TextView) v.findViewById(R.id.dialog_base_text_tv);Button confirmBtn = (Button) v.findViewById(R.id.dialog_base_confirm_btn);titleTv.setText(title);textTv.setText(text);confirmBtn.setOnClickListener(onClickListener);//將監聽放在外面實現baseDialog.setCancelable(false);//是否刪除return baseDialog; }


ps :這里,dialog 的樣式,alertDialog 樣式都能修改.樣式的問題,需要根據需求去改變,功能上的需求 基本上都能實現. 自定義dialog,個人感覺沒有什么意義.

總結

以上是生活随笔為你收集整理的Andorid 项目中Dialog的便捷开发,全面的样式选择.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。