自定义仿IOS的圆角AlertDialog
来源:互联网 发布:mac怎么查看压缩文件 编辑:程序博客网 时间:2024/06/06 03:30
先上个效果图
首先在styles文件里定义样式。
<!-- 自定义仿IOS的AlertDialog的样式 -->
<style name="AlertDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
接着再drawable文件夹下自定义一个圆角的shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- radius 为圆角半径 -->
<corners android:radius="20dp" ></corners>
<solid android:color="#ffffffff" />
</shape>
<corners android:radius="20dp" ></corners>
<solid android:color="#ffffffff" />
</shape>
然后自定义一个dialog的xml布局, 并且设置背景引用圆角shape,android:background="@drawable/bg_course_dialog"
<?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:background="@drawable/bg_course_dialog"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="xxxxxx?"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="xxxxxxx?"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="xxxxx"
android:textColor="#000000"
android:textSize="15sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="20dp"
android:background="#dad6d6" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/dialog_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:text="取消"
android:textColor="#007aff"
android:textSize="18sp" />
<View
android:layout_width="0.5dp"
android:layout_height="match_parent"
android:background="#dad6d6" />
<TextView
android:id="@+id/dialog_commit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="确认"
android:textColor="#007aff"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_course_dialog"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="xxxxxx?"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="xxxxxxx?"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="xxxxx"
android:textColor="#000000"
android:textSize="15sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="20dp"
android:background="#dad6d6" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/dialog_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:clickable="true"
android:gravity="center"
android:text="取消"
android:textColor="#007aff"
android:textSize="18sp" />
<View
android:layout_width="0.5dp"
android:layout_height="match_parent"
android:background="#dad6d6" />
<TextView
android:id="@+id/dialog_commit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="确认"
android:textColor="#007aff"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
然后是在activity中的代码
//初始化dialog
//这个style引用的就是一开始自定义在styles下的样式
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this, R.style.AlertDialogStyle);
AlertDialogdialog = builder.create();
dialog.setCancelable(false);//设置点击外部不能取消
//渲染刚才创建的dialog的自定义布局
View view = View.inflate(MainActivity.this,R.layout.dialog_view, null);
TextView title= (TextView) view.findViewById(R.id.title);
TextView name = (TextView) view.findViewById(R.id.name);
TextView time = (TextView) view.findViewById(R.id.time);
TextView tv_cancel = (TextView) view.findViewById(R.id.dialog_cancel);
TextView tv_commit = (TextView) view.findViewById(R.id.dialog_commit);
name.setText("这是name");
title.setText("这是title");
time.setText("这是time");
//这个是来设置dialog的宽高,这里设置宽为屏幕的0.85倍,高度为包裹内容。
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
int display = windowManager.getDefaultDisplay();
int display = windowManager.getDefaultDisplay();
android.widget.FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
(int) (display.getWidth() * 0.85), LayoutParams.WRAP_CONTENT);
//这里要注意,必须要先调用show()后才能调用setContentView(view, params),
//不然会报异常:requestFeature() must be called before adding content。
//原因大概是调用show()会对dialog的feature做一些处理,所以必须先show后才能setContentView去adding content。
dialog.show();
dialog.setContentView(view, params);
//对取消和确认按键做监听
tv_cancel.setOnClickListener(MainActivity.this);
tv_commit.setOnClickListener(MainActivity.this);
这样就完成了。
0 0
- 自定义仿IOS的圆角AlertDialog
- 自定义AlertDialog,仿Ios效果
- 自定义AlterDialog( 自定义仿IOS的AlertDialog的样式)
- 一个仿IOS风格的AlertDialog
- [Android]仿IOS圆角AlertDialog
- 分享一个仿ios风格的AlertDialog的实现
- 分享一个圆角自定义的漂亮AlertDialog
- 分享一个圆角自定义的漂亮AlertDialog
- 自定义控件之仿IOS的ToggleButton
- 自定义控件之仿IOS的ToggleButton
- 仿IOS开关自定义View的实现
- Android自定义Dialog仿IOS的Dialog
- AlertDialog 的自定义
- AlertDialog的title自定义
- alertDialog的背景自定义
- 好看的 自定义AlertDialog
- AlertDialog的自定义
- 无系统边框自定义圆角AlertDialog
- 算法小解--剑指offer(二)
- hibernate二级缓存
- jquery的ajax请求页面,pc显示正常webApp请求不到,并且报错302的原因
- Mybatis获取自增主键值
- 世界一流的互联网公司是如何运营的?
- 自定义仿IOS的圆角AlertDialog
- android设置默认程序
- Canvas API 详解
- 数据结构实验之查找三:树的种类统计
- Java编程:合并字符串并排序:判断丑陋数:找到最多含有n个不同字符的子串的最长长度
- linux 安装 redis
- ThreadLocal-------结合Filter用于管理Web开发中数据库的事务
- 1060. 爱丁顿数(25)
- 攻城狮的手记