一、概述
原生的dialog一般不是很好看,在不同版本的手机上显示效果可能不太一样,所以我们就需要自定义dialog,这次给大家分享一下,圆角dialog的实现过程,也是自己学习的一个过程。
二、效果图
三、实现过程
1、自定义圆角背景drawable
dialog_round.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 实心 -->
<solid android:color="#FAFAFA" />
<!-- 圆角弧度 -->
<corners android:radius="8dp" />
<stroke
android:width="1dp"
android:color="#FAFAFA" />
</shape>2、在styles.xml中自定义自己的dialog的style风格
<style name="dialog" parent="@android:style/Theme.Dialog">
<!-- 去除对话框默认的白色边框 -->
<item name="android:windowFrame">@null</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否使activity底色透明 -->
<item name="android:windowIsTranslucent">true</item>
<!-- 对话框标题是否显示 -->
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<!-- 设定自己的圆角背景-->
<item name="android:windowBackground">@drawable/search_round2</item>
<!-- 对话框的黑色背景是否透明展示 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 设置透明度,可以设0到1中间的值,0-1越来越不透明 -->
<item name="android:backgroundDimAmount">0.6</item>
</style>3、自定义dialog的contentView
is_clear_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:drawableLeft="@drawable/dialog_icon_info"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="温馨提示"
android:textColor="#55abab"
android:textSize="20sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#55abab" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:layout_marginLeft="10dp"
android:gravity="center_vertical"
android:text="是否清除所有的历史记录?" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#CCCCCC" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/clear_all"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:gravity="center"
android:text="清除"
android:textColor="#55abab"
android:textSize="16sp" />
<View
android:layout_width="0.5dp"
android:layout_height="50dp"
android:background="#CCCCCC" />
<TextView
android:id="@+id/clear_cancle"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:gravity="center"
android:text="取消"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>4、在相应的点击事件里写相应的dialog展示代码
protected void initMyDialog()
{
final Dialog dialog = new Dialog(context, R.style.dialog);
View view = View.inflate(context, R.layout.is_delete_dlalog, null);
dialog.setContentView(view);
Display display = getWindowManager().getDefaultDisplay();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.width = display.getWidth() - 60;
dialog.getWindow().setAttributes(lp);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
// 清除按钮点击事件
view.findViewById(R.id.clear_all).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
SharedPreferencesUtils.saveString(context,
"searchConfig", "");
ll.setVisibility(View.GONE);
dialog.dismiss();
}
});
// 取消按钮点击事件
view.findViewById(R.id.clear_cancle).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
dialog.dismiss();
}
});
}
这个需求其实很简单,不需要自定义dialog,只要改一下dialog的style风格就好,大家如果有这方面的需求,可以做个参考,如果大家有什么建议或者问题,可以给我评论留言。
本文档介绍了如何在Android中创建自定义的圆角Dialog,以解决原生Dialog在不同设备上显示不一致的问题。通过自定义背景drawable,详细阐述了实现圆角Dialog的步骤。
1076

被折叠的 条评论
为什么被折叠?



