Android使用CardView实现圆角对话框
作者:ruancw 发布时间:2023-01-03 20:53:34
标签:Android,CardView,圆角对话框
前言:随着用户体验的不断的加深,良好的UI视觉效果也必不可少,以前方方正正的对话框样式在APP已不复存在,取而代之的是带有圆角效果的Dialog,之前设置对画框的圆角效果都是通过drawable/shape属性来完成,随着Google API的不断更新,API 21(Android 5.0)添加了新的控件CardView,这使得圆角的实现更加方便快捷。
效果图:
导入CardView依赖(API 21新控件)
implementation 'com.android.support:cardview-v7:26.1.0'
1.布局引用
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/dp_10">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorTabClick"
android:gravity="center"
android:padding="@dimen/dp_10"
android:text="温馨提示:确定修改维护详情信息?"
android:textColor="@color/bg_mainWhite"
android:textSize="@dimen/dp_16" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/bg_line" />
<TextView
android:id="@+id/tv_des"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/dp_10"
android:gravity="top"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/bg_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="取消"
android:textSize="@dimen/dp_16" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/bg_line" />
<TextView
android:id="@+id/tv_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:text="确定"
android:textSize="@dimen/dp_16" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
1.cardCornerRadius属性:设置圆角的弧度大小,这里设置的为10dp
2.CardView还有padding、cardUseCompatPadding(内边距)、background等属性
3.CardView继承自FrameLayout,使用时可以重新嵌套布局
2.代码实现
/**
* 展示对话框
*/
private void showDialog(String title) {
//初始化布局文件
View dialogView = View.inflate(mContext, R.layout.dialog_layout_test, null);
//标题
TextView tvTitle = (TextView) dialogView.findViewById(R.id.tv_title);
//确定按钮
TextView tvConfirm = (TextView) dialogView.findViewById(R.id.tv_confirm);
//取消按钮
TextView tvCancel = (TextView) dialogView.findViewById(R.id.tv_cancel);
//描述信息
TextView tvDes= (TextView) dialogView.findViewById(R.id.tv_des);
//设置标题及描述信息
tvTitle.setText(title);
tvDes.setText("退出当前登录后将要重新登录!");
//确定和取消按钮监听事件
tvConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext,LoginActivity.class);
startActivity(intent);
UIUtil.toast("退出成功,请重新登录");
getActivity().finish();
mDialog.dismiss();
}
});
tvCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDialog.dismiss();
}
});
mMessageBuilder = new AlertDialog.Builder(mContext);
mDialog = mMessageBuilder.create();
//设置背景色为透明,解决设置圆角后有白色直角的问题
Window window=mDialog.getWindow();
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mDialog.setView(dialogView);
mDialog.setCanceledOnTouchOutside(false);//点击屏幕不消失
mDialog.show();
//设置参数必须在show之后,不然没有效果
WindowManager.LayoutParams params = mDialog.getWindow().getAttributes();
mDialog.getWindow().setAttributes(params);
}
使用的是V7包的AlertDialog实现的,当然也可以使用Dialog实现。
总结:CardView实现对话框的圆角效果更加的方便,不用编写shape属性,当标题栏需要背景色时,也无需考虑设置标题栏的shape(不使用CardView时,如果不使用shape设置背景色,会导致左上和右上不会变成圆角)。
来源:https://blog.csdn.net/ruancw/article/details/80598377
0
投稿
猜你喜欢
- 这篇文章主要介绍了springboot+springmvc实现登录拦截,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 算法思想快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-
- 1、获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图(1)缺点就是必须更新媒体库才能看到最新的视频的缩略图[java]
- 本文实例讲述了Java基本数据类型与类型转换。分享给大家供大家参考,具体如下:相关内容:基本数据类型整型浮点型字符型布尔型数据类型转换数组首
- 本文实例为大家分享了Java实现抢红包功能的具体代码,供大家参考,具体内容如下关键思想:1.抢红包涉及多人并发操作,需要做好同步保证多线程运
- 本文实例讲述了C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法,在项目开发中有一定的实用价值,具体方法如下:一、前言
- 本节我们来探讨如何使用Feign构造多参数的请求。笔者以GET以及POST方法的请求为例进行讲解,其他方法(例如DELETE、PUT等)的请
- 安装jdk(介绍三种方法)查看java版本:java -version方法一:利用yum源来安装jdk(此方法不需要配置环境变量)查看yum
- 本文实例为大家分享了Android录制音频文件的具体代码,供大家参考,具体内容如下1、这个demo中没有对多次点击同一个声音文件做详细处理,
- 本文实例为大家分享了Android日历控件的使用方法,供大家参考,具体内容如下MainActivity.java代码:package sis
- mapper文件使用in("str1","str2")mybatis的xxxMapper.xml文件
- 本文实例讲述了C#基于委托实现多线程之间操作的方法。分享给大家供大家参考,具体如下:有的时候我们要起多个线程,更多的时候可能会有某个线程会去
- 1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String n
- 这篇文章主要介绍了Java String的intern用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 本文实例为大家分享了Android实现点击某个按钮指定位置弹出布局,供大家参考,具体内容如下package com.topcee.repor
- 如果一个对象不为空null时,把它赋给另外一个对象:像下面这个样子,需要把str的值赋给result,前提条件是在不为空null的前提之下:
- 现象: 1. 表面现象: 方法中输出的日志, 日志文件中找不到, 也没有任何报错(即@Async标注的方法没有执行, 也没有报错)2. 分析
- 在移动应用满天飞的时代,随着移动支付的盛行,很多应用中都集成了支付功能。之前的支付一直不是我负责,近期这个项目我负责订单模块少不了要做支付,
- 单元测试是程序员对代码的自测,一般公司都会严格要求单元测试,这是对自己代码的负责,也是对代码的敬畏。一般单元测试都是测试Service层,下
- 类的定义面向对象的程序设计中,类可以看作是我们自定义的数据类型,那么,如何能更加优美,更加高效地定义它就显得尤为重要。类中的成员有很多,每一