自定義AlertDialog對話方塊的方法

2021-10-02 05:38:30 字數 2202 閱讀 6230

alertdialog對話方塊是程式中常用的控制項,有時為了程式介面風格的統一或者為了使用效果需要自定義alertdialog對話方塊的一些屬性,比如,字元的顏色,背景什麼的。筆者最近在使用對話方塊時就遇到這樣的問題,開始我選擇了這個主題的對話方塊:

程式的介面是這樣子的:

在應用這個主題後對話方塊的效果是這樣的:

看起來對話方塊還可以,大小比較適中,位置也蠻協調,但有幾點需要調整和修改,乙個是按鍵的顏色可能是白色,與背景混了,顯示不出來;第二這個對話方塊有警示的作用,如果把白色的背景換成其他顏色可能警示效果更好。於是就找修改或設定這兩個屬性的方法,找到很多,有的說得很玄乎,追根溯源,最後用反射啥的實現,貌似很複雜,有的用原生的**實現,相對簡單。我想用原生的**實現,無奈運氣不好,用getbutton方法無論怎麼樣都無法得到button的例項,把這個方法放在show方法前和後都顯示button物件為空,所以**執行到給button設定顏色時就閃退,看來只有另找出路。最後終於找到目前比較滿意的實現方案。就是本文介紹的修改theme方法。

這個方法的實質是利用style.xml檔案對選用的theme主題中不太滿意的屬性進行修改,以達到滿意的效果。既然如此,那本方法的第一步是要選擇系統的主題,這個選擇是在alertdialog.builder變數初始化時完成,如第1張圖所示。從主題的列表中選擇乙個基本滿意的主題,然後再對這個主題進行修改。第一次選定的主題可稱為父主題。前面的這三張圖可以說是父主題的選擇過程。

然後第二步是建立自定義主題,這個就是裝置最終使用的alertdialog對話方塊主題。自定義主題的主要屬性都需要繼承父主題的屬性。為此,開啟android studio 中res資料夾裡的style.xml檔案,新建乙個style標籤,name可以隨意取,自已能記住就好,然後要有parent的說明,在parent後面的列表選項中選中父主題的名字,這樣就表達了自定義主題是繼承了父主題的屬性這樣的意圖。

第三步是配置色彩資源,這一步要根據你alertdialog對話方塊最終效果的需要進行配置,比如筆者這個對話方塊的主要作用是警示,因此在色彩配置上需要紅色、黃色、白色。因此,開啟res資料夾中的colors.xml檔案,把需要的這幾種顏色加進去,顏色的名字也可隨意取,為了好記,最好跟色彩相關。下面這個圖就是配置好了色彩以後的color.xml檔案中的**:

第四步是定義alertdialog對話方塊背景和字元的色彩。這個工作要回到style檔案裡來做。用item來設定各種屬性。用android:background設定對話方塊背景色彩,但如果要透明效果,要用android:windowbackground來設定,用android:textcolor設定標題和按鍵字元的顏色,看到過分別設定按鍵顏色的語法,但沒有試過。用android:textcolorprimary設定內容字元(message)的顏色。下圖是本文設定完成後的style檔案(透明對話方塊)。圖中theme_mine就是自定義主題的名字。

第五步是載入自定義對話方塊並進行調整。回到android studio編輯器,在alertdialog.builder變數初始化時主題選擇的列表中已經能看到自定義主題的名字,選中它就把自定義主題載入到了對話方塊的設定中。如下圖:

使用自定義的AlertDialog。

使用自定義的alertdialog。1 核心的方法是setview view view 把自己的view放置到dialog中填充。2 setcanceledontouchoutside boolean 是用來設定dialog以外區域是否會消失。3 還要設定下style setwindowanimat...

自定義AlertDialog實現下彈窗效果

1,實現這個dialog其實最主要的是window的設定和dialog的主題設定,list是由resycleview實現的,下面直接上 private void initwindow 2,啟動的時候,可以傳入相應的主題theme,theme決定了你dialog的顯示樣式,先上theme的 3,啟動的...

對自定義UITableViewCell的理解

自定義uitableviewcell有兩種方法 1.較早版本 子類uitableviewcell 並利用xib構造 2.利用storyboard直接自定義cell 1.利用xib 設計好自定義的cell並且連線好控制項後 有兩種方法引用我們自己的cell 方法1 1 uitableviewcell ...