android怎么实现自定义对话框的背景
我知道你出现什么问题了,你是不是写了一个类继承了dialog,然后再实例化,这个dialog,但是button按钮美发添加**是不?
如果你要是自己继承了dialog的话,那么我们看看源码把!
dialog
implements dialoginterface
也就是说dialog继承了 dialoginterface这个接口
好的 我们再看看dialoginterface这个接口把
我们会发现dialoginterface 有一个方法:
public static interface onclickl**tener
{
public abstract void onclick(dialoginterface dialoginterface, int i);
}
好的 那么也就是如果我们继承了dialog的话,我们同样也继承了dialoginterface这个接口的onclickl**tner方法所以我们再给button设置onclickl**tner的时候就会出错,因为本身就是不同包的东西,现在放到一个类里面肯定就会出错!
解决方法:在给button 设置点击事件的时候,加上完整的包名就行了!
专门给你敲了个例子你看看:
activity里面:
public class questionactivity extends activity {
@override
public void oncreate(bundle s**edinstancestate) {
super.oncreate(s**edinstancestate);
setcontentview(r.layout.main);
}
@override
public boolean onkeydown(int keycode, keyevent event) {
dialog ad = new mydialog(th**);
ad.show();
return super.onkeydown(keycode, event);
}
}
自定义dialog里面:
public class mydialog extends dialog {
context context;
public mydialog(context context) {
super(context);
th**.context = context;
init();
}
public void init() {
linearlayout ll = new linearlayout(context);
ll.setlayoutparams(new layoutparams(layoutparams.fill_parent,
layoutparams.wrap_content));
button btn = new button(context);
btn.settext("hello");
/************************************************************/
btn.setonclickl**tener(new android.view.view.onclickl**tener() {
@override
public void onclick(view view) {
toast.maketext(context, "hello", 0).show();
mydialog.th**.d**m**s();
}
});
/**********************************************************/
ll.addview(btn);
th**.setcontentview(ll);
}
}
注意*****行里面 20210311