效果:
实现:
1.dialog_layout.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/dialog_bg"> <!--对话框标题区域--> <RelativeLayout android:layout_width="280dp" android:layout_height="100dp" android:id="@+id/layout_title" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" android:text="11111" android:textColor="@color/black" android:gravity="center"/> </RelativeLayout> <!--对话框横线--> <View android:layout_width="280dp" android:layout_height="1dp" android:background="@color/grey" android:layout_below="@+id/layout_title" android:layout_marginBottom="10dp"/> <!--对话框按钮区域--> <RelativeLayout android:id="@+id/bottomoll" android:layout_width="280dp" android:layout_height="wrap_content" android:layout_below="@+id/layout_title"> <LinearLayout android:layout_width="280dp" android:layout_height="wrap_content"> <!--取消按钮--> <Button android:id="@+id/btn_cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="取消" android:textColor="@color/blue" android:background="@null" android:textSize="18sp" android:paddingTop="10dp" android:paddingBottom="10dp"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="@color/grey"/> <!--退出按钮--> <Button android:id="@+id/btn_exit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="确定" android:textColor="@color/blue" android:background="@null" android:textSize="18sp"/> </LinearLayout> </RelativeLayout> </RelativeLayout>
2.在style.xml中设置dialog的样式:
<!--对话框样式--> <style name="mdialog" parent="android:style/Theme.Dialog"> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 没有标题 --> <item name="android:windowNoTitle">true</item> <!-- 背景昏暗 --> <item name="android:backgroundDimEnabled">true</item> </style>
3.创建类继承Dialog:
public class ConstomDialog extends Dialog { /**取消按钮*/ private Button button_cancel; /**确认按钮*/ private Button button_exit; /**标题文字*/ private TextView tv; //构造方法 public ConstomDialog(Context context) { super(context, R.style.mdialog); //通过LayoutInflater获取布局 View view = LayoutInflater.from(getContext()). inflate(R.layout.dialog_layout, null); tv = (TextView) view.findViewById(R.id.title); button_cancel = (Button) view.findViewById(R.id.btn_cancel); button_exit = (Button) view.findViewById(R.id.btn_exit); //设置显示的视图 setContentView(view); } /** * 设置显示的标题文字 */ public void setTv(String content) { tv.setText(content); } /** * 取消按钮监听 * */ public void setOnCancelListener(View.OnClickListener listener){ button_cancel.setOnClickListener(listener); } /** * 退出按钮监听 * */ public void setOnExitListener(View.OnClickListener listener){ button_exit.setOnClickListener(listener); } }
4.使用ConstomDialog:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //不显示系统的标题栏, getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN ); setContentView(R.layout.activity_main); findViewById(R.id.tv_showDialog).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(); } }); } /** * 弹出对话框 */ public void showDialog() { //实例化自定义对话框 final ConstomDialog mdialog = new ConstomDialog(this); //对话框中退出按钮事件 mdialog.setOnExitListener(new View.OnClickListener() { @Override public void onClick(View v) { //如果对话框处于显示状态 if (mdialog.isShowing()) { //关闭对话框 mdialog.dismiss(); //关闭当前界面 finish(); } } }); //对话框中取消按钮事件 mdialog.setOnCancelListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mdialog != null && mdialog.isShowing()) { //关闭对话框 mdialog.dismiss(); } } }); mdialog.show(); } }