您的位置:首页 > 移动开发 > Android开发

Android自定义View—自定义dialog的使用

2015-06-12 16:47 561 查看
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(需要注意的是default:

break;这两个必须加上,不然就会报错):

main_repor_ll_dialog_today.setOnClickListener(new Myonclick());
main_repor_ll_dialog_this_week.setOnClickListener(new Myonclick());
main_repor_ll_dialog_last_week.setOnClickListener(new Myonclick());
main_repor_ll_dialog_this_month.setOnClickListener(new Myonclick());
main_repor_ll_dialog_last_month.setOnClickListener(new Myonclick());
main_repor_ll_dialog_this_season.setOnClickListener(new Myonclick());
main_repor_ll_dialog_last_season.setOnClickListener(new Myonclick());
main_repor_ll_dialog_mine.setOnClickListener(new Myonclick());
class Myonclick implements View.OnClickListener{
public void onClick(View v) {

switch (v.getId()){
case R.id.main_repor_ll_dialog_today:
Toast.makeText(Report.this,"这是第一个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_this_week:
Toast.makeText(Report.this,"这是第二个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_last_week:
Toast.makeText(Report.this,"这是第三个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_this_month:
Toast.makeText(Report.this,"这是第四个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_last_month:
Toast.makeText(Report.this,"这是第五个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_this_season:
Toast.makeText(Report.this,"这是第六个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_last_season:
Toast.makeText(Report.this,"这是第七个",Toast.LENGTH_SHORT).show();
break;
case R.id.main_repor_ll_dialog_mine:
Toast.makeText(Report.this,"这是第八个",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: