自定义dialog的使用

1、dialog是一种常用的对话框,使用方便,相比较popupwindow,dialog不用改变背景的透明度来使背景变暗,样式也较为多样,可以使用系统的简单的样式,也可以使用自定义的样式,将一个xml或者一个activity自定义为一个dialog。
首先创建一个alertdialog.builder 然后将xml实例化为一个view,给这个builder设置标题以及将自定义的view设置为builder的view,将dialog创建并显示出来。如果要对dialog中的控件进行操作的话,就得先找到dialog中的控件,注意在findviewbyid的前面要加上一个dialog,证明你是在这个dialog找的控件,

AlertDialog.Builder builder = new AlertDialog.Builder(
message.this);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(
R.layout.activity_main_user_message_line, null);
builder.setTitle("");
builder.setView(view);
AlertDialog dialog = builder.create();
dialog.show();
main_user_message_rl1 = (RelativeLayout) dialog
.findViewById(R.id.main_user_message_line_rl1);
main_user_message_rl1
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent();
i.setAction(Intent.ACTION_CALL);
i.setData(Uri.parse("tel:"+"0757-07570757"));
message.this.startActivity(i);
}
});   

2、dialog设置无标题栏:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

3、自定义dialog,包括自定义的xml布局、dialog的相对位置、dialog的长宽:

dialog.setContentView(R.layout.activity_report_popupwindow);
Window dialogwindow = dialog.getWindow();
WindowManager.LayoutParams lp = dialogwindow.getAttributes();
dialogwindow.setGravity(Gravity.LEFT | Gravity.TOP);
lp.x = 0;
lp.y = 350;
lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
lp.height = 600;
dialogwindow.setAttributes(lp);
dialog.show();

4、当dialog内有多个控件需要进行点击事件的时候,可以先自定义个OnclickListener,然后让每个点击事件的参数都设置为自定义的OnclickListener:

main_dialog_01.setOnClickListener(new Myonclick());
main_dialog_02.setOnClickListener(new Myonclick());
main_dialog_03.setOnClickListener(new Myonclick());
class Myonclick implements View.OnClickListener{
    public void onClick(View v) {
        switch (v.getId()){
            case main_dialog_01:
                Toast.makeText(Report.this,"这是第一个",Toast.LENGTH_SHORT).show();
                break;
            case main_dialog_02:
                Toast.makeText(Report.this,"这是第二个",Toast.LENGTH_SHORT).show();
                break;
            case main_dialog_03:
                Toast.makeText(Report.this,"这是第三个",Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值