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

效果:


实现:

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:

扫描二维码关注公众号,回复: 4343243 查看本文章

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();

    }


}

猜你喜欢

转载自blog.csdn.net/css33/article/details/80808199