利用重寫Dialog實現自定義對話方塊

2021-07-16 05:39:57 字數 1276 閱讀 7195

上網查詢時發現,許多人都建議使用alertdialog來實現自定義對話方塊,故對其進行了嘗試:

view modifypassworddialog = getlayoutinflater().inflate(r.layout.dialog_modify_password, null);

alertdialog alertdialog = new alertdialog.builder(this).create();

alertdialog.setview(modifypassworddialog,0,0,0,0);

window window = alertdialog.getwindow();

windowmanager.layoutparams lp = window.getattributes();

// 設定透明度為0.3

lp.alpha = 0.6f;

window.setattributes(lp);

alertdialog.getwindow().setbackgrounddrawable(new colordrawable(color.transparent));

alertdialog.show();

如此一來,

alertdialog.setview(modifypassworddialog,0,0,0,0);能夠使得整個對話方塊的邊界與自定義貼近,但是無法去除對話方塊的白色邊界;若自定義

是非矩形的,則對話方塊中的剩餘部分會被黑色所代替,此時通過設定透明度

lp.alpha = 0.6f;亦無法解決。

除此以外,alertdialog中只提供了setview方法,這與setcontentview是不同的,參考:
嘗試了使用重寫dialog的oncreate方法後,成功實現:
dialog dialog = new dialog(this)

@override

public void onbackpressed()

};dialog.setcancelable(false);

dialog.requestwindowfeature(window.feature_no_title);

dialog.getwindow().setbackgrounddrawable(new colordrawable(color.transparent));//對話方塊與自定義影象的邊界用透明代替黑色

dialog.show();

android 自定義實現圓角Dialog

首先我們需要自定義dialog布局檔案view input pwd dialog.xml,如下 dialog背景圓角定義dialog bg.xml 實現 layoutinflater inflater layoutinflater from getactivity linearlayout layo...

重寫UIPageControl實現自定義按鈕

有時候uipagecontrol需要用到白色的背景,那麼會導致上面的點按鈕看不見或不清楚,我們可以通過繼承該類重寫函式來更換點按鈕的現實.實現思路如下.新建類繼承uipagecontrol inte ce mypagecontrol uipagecontrol id initwithframe cg...

重寫UIPageControl實現自定義按鈕

新建類繼承uipagecontrol mypagecontrol.h檔案 inte ce mypagecontrol uipagecontrol id initwithframe cgrect frame property nonatomic,retain uiimage imagepagestat...