美文网首页
自定义圆角Dialog

自定义圆角Dialog

作者: 清明捉鬼 | 来源:发表于2018-08-07 11:23 被阅读23次
前言

在开发过程中经常想使用到圆角dialog,但是写过之后你会发现View是圆角了,但是Dialog矩形的背景还是仍然存在,我在一次帮人解决bug的过程中发现他写的类,此处记载实现方式。

主题

<style name="custom_dialog" parent="@android:style/Theme.Dialog">
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
        <!-- 是否浮现在activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 模糊 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 遮罩层 -->
        <item name="android:backgroundDimAmount">0.5</item>
    </style>

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:background="@drawable/shape_corner"
    android:gravity="center"
    android:orientation="vertical">
    <!--取消确认类型的dialog-->
    <TextView
        android:id="@+id/dialog_title_tv"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        tools:text="确认已收到货了吗?"
        android:textColor="#666666"
        android:layout_marginTop="10dp"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginTop="10dp"
        android:background="#D9D9D9" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:gravity="center">
        <TextView
            android:id="@+id/cancel_tv"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="#666666"
            android:text="取消" />
        <View
            android:layout_width="0.5dp"
            android:layout_height="match_parent"
            android:layout_marginTop="3dp"
            android:layout_marginBottom="3dp"
            android:background="#D9D9D9" />
        <TextView
            android:id="@+id/ok_tv"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="#cc0033"
            android:text="确定" />
    </LinearLayout>
</LinearLayout>

shape_corner

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" />
    <corners android:radius="15dp"/>
    <stroke android:width="1dp" android:color="#ffffff" />
</shape>

Java代码
虽说自定义的代码他写的有点丑陋,封装性不强而且不严格是自定义的风格,但是话粗理不粗,能用就行,我在使用中肯定会改造。

public class CancelOrOkDialog extends Dialog {
    public CancelOrOkDialog(Context context, String title) {
        super(context, R.style.custom_dialog);
        setContentView(R.layout.dialog_cancel_or_ok);
        setCancelable(false);
        TextView titleTv = (TextView) findViewById(R.id.dialog_title_tv);
        titleTv.setText(title);
        findViewById(R.id.cancel_tv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View paramView) {
                cancel();
            }
        });
        findViewById(R.id.ok_tv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View paramView) {
                ok();
            }
        });
    }
    public void ok() {
    }
}

相关文章

网友评论

      本文标题:自定义圆角Dialog

      本文链接:https://www.haomeiwen.com/subject/mquovftx.html