我们经常使用AlertDialog 其中给我们定义好了确定取消 设置标题 内容 等功能
一般使用如下:
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.recharge_result); builder.setMessage(R.string.buy_fail_money_not_enough); builder.setNegativeButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.setCancelable(false); dialog.show();
但是当我们需要自己定义布局时 我们可以这样:
Dialog rechagrDialog=new Dialog(this,R.style.RechargeDialog); rechagrDialog.setContentView(R.layout.recharge_dialog); rechagrDialog.findViewById(R.id.yes).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rechagrDialog.dismiss(); } }); rechagrDialog.findViewById(R.id.no).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rechagrDialog.dismiss(); } }); rechagrDialog.setCancelable(false); rechagrDialog.show();布局代码如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <RelativeLayout android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="300dp"> <ImageView android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/bg_sendsms_dialog"/> <ImageView android:id="@+id/iv_box" android:layout_centerHorizontal="true" android:layout_width="148dp" android:layout_height="150dp" android:src="@drawable/bg_sendsms_box"/> <TextView android:id="@+id/tv_recharge_text" android:layout_marginTop="5dp" android:textColor="#ffffff" android:textStyle="bold" android:gravity="center" android:layout_centerHorizontal="true" android:layout_below="@+id/iv_box" android:text="@string/recharge_dialog_text" android:textSize="18sp" android:layout_width="250dp" android:layout_height="wrap_content" /> <TextView android:gravity="center" android:id="@+id/no" android:textColor="#feb7c4" android:textSize="18sp" android:layout_above="@+id/yes" android:layout_centerHorizontal="true" android:layout_width="273dp" android:layout_height="40dp" android:text="@string/recharge_dialog_no"/> <TextView android:layout_marginBottom="10dp" android:gravity="center" android:text="@string/recharge_dialog_yes" android:textColor="#000000" android:textSize="18sp" android:textStyle="bold" android:id="@+id/yes" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_width="273dp" android:layout_height="44dp" android:background="@drawable/bg_sendsms_botton"/> <ImageView android:layout_alignParentBottom="true" android:layout_width="330dp" android:layout_height="293dp" android:src="@drawable/bg_sendsms_cions"/> </RelativeLayout> </RelativeLayout>
效果如下:
style如下,将这个style加载styles中:
<style name="RechargeDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
可以根据自己需要 设置dialog是否需要标题 背景颜色等
这样 就可以在两个点击事件中完成自己需要的逻辑 同时也可以动态的设置dialog中的文字等