Android自定义Dialog+圆角处理

目录

一、自定义Dialog

二、Dialog添加圆角


一、自定义Dialog

自定义Dialog实现过程

本文的自定义dialog是在fragment中实现的,在Activity里面应该大同小异了。

android studio其实自带了很多种dialog

下面这个图是引用一位大佬的!

 这几天在学习自定义的Dialog的使用,一开始以为很难,因为没有接触过,虽然自己使用过AlertDialog和ProgressDialog,但是图中的一些东西我并不知道是可以用自定义Dialog实现的。

好伐啦,接下来就开始介绍Dialog的自定义使用吧!

首先,准备好自定义布局:

比如说,我需要一个这样的东西:点击某处出现一个列表供你选择,比如拍照、相册和取消。

自定义,那肯定是需要自己准备布局文件的啦!

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:id="@+id/take_photo_btn"
        android:text="相机"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/select_photo_btn"
        android:text="相册"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/getOut"
        android:text="取消"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

简简单单的一个线性布局+三个按钮

其次,就是使用Dialog。

private Dialog dialogPhoto;
引入布局 R.layout.dialog_photo_select即xml文件 第二个参数和第三个参数填false就行。
View photoView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_photo_select,null,false);
最重要的一点:控件的绑定
因为后面需要实现弹出来的dialog的点击事件,那么就需要绑定控件,而绑定控件时要注意下面红色处代码。
takePhoto = (Button) photoView.findViewById(R.id.take_photo_btn);
fromPhoto = (Button)  photoView.findViewById(R.id.select_photo_btn);
backPhoto = (Button) photoView.findViewById(R.id.getOut);
dialogPhoto = new AlertDialog.Builder(getContext()).setView(photoView).create();
dialogPhoto.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置dialog背景透明
dialogPhoto.setCancelable(false);//点击dialog其他地方不能取消dialog
dialogPhoto.getWindow().setLayout(getResources().getDisplayMetrics().widthPixels * 3/4, LinearLayout.LayoutParams.WRAP_CONTENT);//设置对话框大小

最后,Dialog的点击事件。

既然你已经可以实现点击某处弹出一个Dialog出来,那么你肯定是需要对这个做一些处理的,即对上面的三个按钮实现点击事件。

backPhoto.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
       dialogPhoto.dismiss();
   }
});

另外两个按钮不多说了,举一反三。

实现效果图

二、Dialog添加圆角

如何自定义dialog圆角呢,上面的图片看不出效果也没有设置圆角,因为只有三个按钮,下面将会有不设置和设置圆角以后的效果图。

首先新建drawable文件

drawable/bg_dialog_transfer(名字你自己随意)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
 
    <solid android:color="@color/white" />
    <corners android:radius="10dp" />
</shape>

然后就是去你自定义dialog的布局文件里面去引用上面这个文件

 这一步设置了以后,千万千万注意要设置自定义的dialog的背景为透明的,否则圆角效果不会出现

代码中的dialog填你自己的自定义dialog名字即可。

                Window window = dialogName.getWindow();
                window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

设置完成看看效果图!

未设置圆角时

设置圆角后 

是不是美观多了🍉

文章也借鉴了另外一位大佬的相关内容,当然我也是从他这里偷学的!

圆角借鉴

继续加油,每天多学习一点,多进步一点。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值