Android--自定义Dialog,仿IOS对话框样式

效果:

Android--自定义Dialog,仿IOS对话框样式_第1张图片


实现:

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/transparentitem>
    
    <item name="android:windowNoTitle">trueitem>
    
    <item name="android:backgroundDimEnabled">trueitem>
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();

    }


}

你可能感兴趣的:(android)