❶ android 的 AlertDialog 對話框樣式可以修改嗎
Android 提供了AlertDialog類可通過其內部類Builder輕松創建對話框窗口,但是沒法對這個對話框窗口進行定製,為了修改 AlertDialog 窗口顯示的外觀,解決的辦法就是創建一個指定的 AlertDialog 和 AlertDialog.Builder 類。
定義外觀
我們希望將上面默認的對話框外觀修改為如下圖所示的新對話框風格:
編寫對話框和 Builder 類
❷ android 如何動態設置控制項的寬度和高度
一、方法
使用getLayoutParams() 和setLayoutParams()方法
二、示例代碼
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) aaa.getLayoutParams();
// 取控制項aaa當前的布局參數
linearParams.height = 365; // 當控制項的高強制設成365象素
aaa.setLayoutParams(linearParams); // 使設置好的布局參數應用到控制項aaa
三、原理
a)getLayoutParams()和setLayoutParams()都是控制項基類view的public方法,在外部也可以直接調用。
b)由於LayoutParams一般是在加入容器中設置的,所以容易混淆所指定的布局屬性究竟是保存在容器中,還是控制項本身的屬性,答案是控制項本身。但是在設置時還是要注意布局屬性與容器種類密切相關。
❸ Android開發如何設置Dialog樣式
黑色的這個dialog是系統默認的樣式,白色的是android4.0以上自帶的一個樣式,需要在manifest的application中引用@android:style/Theme.Holo.Light這個樣式
❹ android自定義的dialog怎麼設置view
要設置Android自定義的dialog,首先需要創建一個自定義的CustomDialog類,繼承自Dialog。接著在CustomDialog類中重寫onCreate(Bundle savedInstanceState)方法。在onCreate方法中,通過mLayoutInflater.inflate()方法載入需要顯示的布局文件,例如,載入LinearLayout布局,代碼如下:
view = (LinearLayout) mLayoutInflater.inflate(R.layout.view_dialog, null);
完成載入布局後,使用setContentView(View view, ViewGroup.LayoutParams params)方法將自定義的view設置為dialog的內容。這里的第一個參數就是你需要設置的view,第二個參數是LayoutParams,用於設置view的大小和其他屬性。設置完成後,dialog的界面將顯示你自定義的view。
需要注意的是,自定義dialog時,應確保所使用的布局文件和相關的資源文件已正確添加到項目的資源目錄中。同時,對於dialog的顯示和隱藏操作,可以通過調用show()和dismiss()方法來控制。
在實際開發過程中,為了提高代碼的可讀性和可維護性,建議將自定義dialog的創建和顯示邏輯封裝到單獨的方法中,以便於復用和管理。此外,還可以根據需要為dialog添加各種交互功能,例如按鈕點擊事件處理、輸入框內容監聽等。
最後,在使用自定義dialog時,要注意處理好用戶交互體驗,例如合理設置dialog的大小和位置,確保其在屏幕上居中顯示,並且不會被其他UI元素遮擋。同時,考慮到不同設備和屏幕尺寸的適配問題,可以通過使用ConstraintLayout等布局方式,使自定義dialog能夠更好地適應各種屏幕尺寸。
綜上所述,通過自定義CustomDialog類並重寫onCreate方法,可以靈活地設置dialog的內容和樣式。在實際開發中,還需注意布局文件的正確載入、LayoutParams的設置以及與用戶交互的處理,以實現功能強大且用戶體驗良好的自定義dialog。
❺ 安卓怎麼修改系統「DIALOG」風格
具體步驟如下:
1編寫一個文本樣式。
DIALOG的標題是一個textview,在sytles.xml中,添加如下代碼來設置你自己的文本樣式:
<style name="DialogWindowTitle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">@color/font_dark_grey</item>
</style>
2設置對話框的標題主題。
上面的標題文本並不能直接設置譽笑緩為對話框的標題樣式。 我們還需要編寫一個表示標題的主題的style,在這里指定標題的文本樣式慶模。代碼如下:
<style name="DialogWindowTitle.DeviceDefault">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/DialogWindowTitle</item>
</style>
3設置對話框主題。
接下來,我們編寫我們的對話框主題,在這里指定標題的主題。由於一些屬性並不是public的,所以我們需要繼承自原來的某個style,代碼如下:
<!--Dialog主題-->
<style name="Theme.DeviceDefault.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
<item name="android:windowTitleStyle">@style/DialogWindowTitle.DeviceDefault</item>
</style>
4自定義App的主題。
接下來,我們需要在我們的App theme中指定我們的對話框使用這種主題,所以需要定義一個App theme。同樣由於App theme的許多屬性並不是public的(比如下面要提到的標題下面的那條藍線),所以我們要繼承自一個原生的style。這里我根據程序需要選擇了Theme.Holo.Light.NoActionBar,代碼如下:
<style name="ParkingTheme" parent="@android:style/Theme.Holo.Light.NoActionBar">
<item name="android:dialogTheme">@style/Theme.DeviceDefault.Dialog</item>
</style>
5指定App主題
我們需要在升顫AndroidManifest.xml文件中,指定我們的app主題。這步很簡單,只需要在application標簽中指定android:theme的值即可,如下:
android:theme="@style/ParkingTheme"
6編寫AlertDialog主題。
我們無法直接繼承系統主題里的AlertDialog的style。如把parent指定為Theme.DeviceDefault.Dialog.Alert,Theme.Holo.Dialog.Alert,Theme.DeviceDefault.Light.Dialog.Alert或Theme.Holo.Light.Dialog.Alert,都會導致編譯不過。所以我們需要繼承自Dialog的style。在這里我以Theme.Holo.Light.Dialog為例,代碼如下:
<!--AlderDialog主題-->
<style name="Theme.DeviceDefault.Dialog.Alert" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle.DeviceDefault</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
7指定AlertDialog的主題。
我們需要在第4步所說的自定義的AppTheme中,添加一行代碼來指定要使用的AlertDialog的style,代碼如下:
<item name="android:alertDialogTheme">@style/Theme.DeviceDefault.Dialog.Alert</item>
8修改標題下面的藍色線。
表示這條藍色的線的叫做titleDivider,我們可以通過getResources()的API來獲取它的IP,然後設置顏色。代碼如下:
public static final void dialogTitleLineColor(Dialog dialog, int color) {
Context context = dialog.getContext();
int divierId = context.getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = dialog.findViewById(divierId);
divider.setBackgroundColor(color);
這行代碼對於自定義的Dialog,可以在setContentView之後調用。但是對於AlertDialog,必須在show()方法被調用之後才可以去調用,否則會報錯。
❻ Android Dialog 設置Margin方式總結
在日常開發中,總是會遇到各種Dialog的使用,調整根據UI設計的不同,會經常調整Dialog在屏幕中的位置,這篇文章主要介紹,在使用 DialogFragment 時設置Margin的幾種方式。
如下是最後實現的效果:
設置兩邊margin效果:
設置頂部margin效果:
全屏的Dialog設置頂部Margin:
這個比較容易,主要就是設置一個高度wrap_content,寬度match_parent的dialog,然後在dialog的布局中設置margin就可以了。
如下是xml文件:
然後在DialogFragment的onResume里對Window做一些處理:
這種情況margin可以通過 WindowManager.LayoutParams 的 verticalMargin 屬性來實現。 verticalMargin 和xml裡面設置的layout_margin不一樣, verticalMargin 是通過設置一個0-1的float變數,來標識margin在屏幕中的佔比。
如下是在DialogFragment的onResume中的處理:
xml文件(和1的類似,沒有什麼特別):
這里如果使用2中的方法,沒有任何效果。這里使用另外一種方式實現-- insetDrawable 。
這里的實現是在xml裡面寫一個 <inset> :
在DialogFragment的onResume方法中: