实际项目开发中默认的Dialog无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件。
上效果图:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5COiFGZkBDNmRGZ1kTYlZmMkVWNmdDO3MjM4Y2MjVjM08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
自定义Dialog,LogoutDialog:
要将自定义布局传入构造函数中,才能在Activity中通过 dialog.findviewbyid 获取到控件,否则返回null。
public class LogoutDialog extends Dialog{
Context context;
public LogoutDialog(Context context) {
super(context);
this.context=context;
this.setContentView(R.layout.logout_dialog);
}
public LogoutDialog(Context context, int theme){
super(context, theme);
this.context = context;
this.setContentView(R.layout.logout_dialog);
}
[email protected]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//this.setContentView(R.layout.logout_dialog);
}
}
自定义布局文件,logout_dialog.xml:
android:layout_width="250dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@android:color/transparent"
>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_top_bg"
android:orientation="vertical"
android:paddingTop="10dp"
>
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/pop_icon1"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="10dp"
/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="是否确认注销账号"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="20dp"
android:textColor="#FF3C25"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
/>
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center_vertical"
android:background="@drawable/dialog_buttom_bg"
>
android:id="@+id/back_btn_dialog"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="返回"
android:layout_weight="1"
android:textColor="#FFFFFF"
android:gravity="center"
/>
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="|"
android:textColor="#C9CACC"
android:gravity="center"
/>
android:id="@+id/submit_btn_dialog"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="确定"
android:layout_weight="1"
android:textColor="#FFFFFF"
android:gravity="center"
/>
两个Shape的布局,dialog_buttom_bg.xml:
>
android:bottomLeftRadius="@dimen/dialog_corners"
android:bottomRightRadius="@dimen/dialog_corners"
/>
android:startColor="#FF3E25"
android:endColor="#FF3E25"
android:centerColor="#FF3E25"
android:angle="270"
/>
dialog_top_bg.xml:
android:topLeftRadius="@dimen/dialog_corners"
android:topRightRadius="@dimen/dialog_corners"
/>
android:startColor="#ffffff"
android:endColor="#ffffff"
android:centerColor="#ffffff"
android:angle="270"
/>
自定义样式Style,来改变默认的Dialog样式。在values/styles.xml下新加样式:
@null
true
@drawable/dialog_background
true
@null
在Activity中调用:
Dialog dialog==new LogoutDialog(TempActivity.this, R.style.UpdateErrorFinishDialog);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
TextView submit_btn_dialog=(TextView) dialog.findViewById(R.id.submit_btn_dialog);
TextView back_btn_dialog=(TextView) dialog.findViewById(R.id.back_btn_dialog);
submit_btn_dialog.setOnClickListener(new View.OnClickListener() {
[email protected]
public void onClick(View v) {
//Toaster.showLongToast("确定");
dialog.dismiss();
}
});
back_btn_dialog.setOnClickListener(new View.OnClickListener() {
[email protected]
public void onClick(View v) {
//Toaster.showLongToast("返回");
dialog.dismiss();
}
});
原文:http://www.cnblogs.com/Joanna-Yan/p/4438725.html