本文实例讲述了Android编程自定义对话框(Dialog)位置及大小的方法。分享给大家供大家参考,具体如下:

代码:
package angel.devil;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
public class DialogDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Dialog dialog = new Dialog(this);
// setContentView可以设置为一个View也可以简单地指定资源ID
// LayoutInflater
// li=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
// View v=li.inflate(R.layout.dialog_layout, null);
// dialog.setContentView(v);
dialog.setContentView(R.layout.dialog_layout);
dialog.setTitle("Custom Dialog");
/*
* 获取圣诞框的窗口对象及参数对象以修改对话框的布局设置,
* 可以直接调用getWindow(),表示获得这个Activity的Window
* 对象,这样这可以以同样的方式改变这个Activity的属性.
*/
Window dialogWindow = dialog.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);
/*
* lp.x与lp.y表示相对于原始位置的偏移.
* 当参数值包含Gravity.LEFT时,对话框出现在左边,所以lp.x就表示相对左边的偏移,负值忽略.
* 当参数值包含Gravity.RIGHT时,对话框出现在右边,所以lp.x就表示相对右边的偏移,负值忽略.
* 当参数值包含Gravity.TOP时,对话框出现在上边,所以lp.y就表示相对上边的偏移,负值忽略.
* 当参数值包含Gravity.BOTTOM时,对话框出现在下边,所以lp.y就表示相对下边的偏移,负值忽略.
* 当参数值包含Gravity.CENTER_HORIZONTAL时
* ,对话框水平居中,所以lp.x就表示在水平居中的位置移动lp.x像素,正值向右移动,负值向左移动.
* 当参数值包含Gravity.CENTER_VERTICAL时
* ,对话框垂直居中,所以lp.y就表示在垂直居中的位置移动lp.y像素,正值向右移动,负值向左移动.
* gravity的默认值为Gravity.CENTER,即Gravity.CENTER_HORIZONTAL |
* Gravity.CENTER_VERTICAL.
*
* 本来setGravity的参数值为Gravity.LEFT | Gravity.TOP时对话框应出现在程序的左上角,但在
* 我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了,
* Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM与Gravity.RIGHT都是如此,据边界有一小段距离
*/
lp.x = 100; // 新位置X坐标
lp.y = 100; // 新位置Y坐标
lp.width = 300; // 宽度
lp.height = 300; // 高度
lp.alpha = 0.7f; // 透明度
// 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes
// dialog.onWindowAttributesChanged(lp);
dialogWindow.setAttributes(lp);
/*
* 将对话框的大小按屏幕大小的百分比设置
*/
// WindowManager m = getWindowManager();
// Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
// WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
// p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.6
// p.width = (int) (d.getWidth() * 0.65); // 宽度设置为屏幕的0.65
// dialogWindow.setAttributes(p);
dialog.show();
}
}
布局文件:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00FF00"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="10dp" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A Dialog"
android:textColor="#FFF" />
</LinearLayout>
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 自定义
# 对话框
# Dialog
# 位置
# 大小
# android自定义Dialog弹框和背景阴影显示效果
# Android自定义Dialog内部透明、外部遮罩效果
# Android自定义Dialog实现加载对话框效果
# Android编程自定义AlertDialog样式的方法详解
# 解决Android中自定义DialogFragment解决宽度和高度问题
# Android 自定义AlertDialog对话框样式
# Android自定义对话框Dialog的简单实现
# Android中DialogFragment自定义背景与宽高的方法
# Android自定义Dialog原理实例解析
# 出现在
# 设置为
# 有一
# 值为
# 小段
# 都是
# 进阶
# 直接调用
# 相关内容
# 可以用
# 但在
# 感兴趣
# 给大家
# 相对于
# 更多关于
# 这可
# 解决方法
# 机上
相关文章:
如何做静态网页,sublimetext3.0制作静态网页?
高防服务器租用如何选择配置与防御等级?
建站之星如何保障用户数据免受黑客入侵?
如何通过FTP服务器快速搭建网站?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
江苏网站制作公司有哪些,江苏书法考级官方网站?
如何在香港免费服务器上快速搭建网站?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
建站VPS配置与SEO优化指南:关键词排名提升策略
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
名字制作网站免费,所有小说网站的名字?
c# 在高并发场景下,委托和接口调用的性能对比
红河网站制作公司,红河事业单位身份证如何上传?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
建站主机空间推荐 高性价比配置与快速部署方案解析
再谈Python中的字符串与字符编码(推荐)
ppt制作免费网站有哪些,ppt模板免费下载网站?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何在IIS管理器中快速创建并配置网站?
javascript基本数据类型及类型检测常用方法小结
建站之星微信建站一键生成小程序+多端营销系统
如何用虚拟主机快速搭建网站?详细步骤解析
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
建站之星3.0如何解决常见操作问题?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
c# await 一个已经完成的Task会发生什么
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
制作网站的基本流程,设计网站的软件是什么?
建站之星24小时客服电话如何获取?
如何高效利用亚马逊云主机搭建企业网站?
如何在阿里云完成域名注册与建站?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何零成本快速生成个人自助网站?
Swift中switch语句区间和元组模式匹配
c++ stringstream用法详解_c++字符串与数字转换利器
盐城做公司网站,江苏电子版退休证办理流程?
教学网站制作软件,学习*后期制作的网站有哪些?
内网网站制作软件,内网的网站如何发布到外网?
广德云建站网站建设方案与建站流程优化指南
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
如何续费美橙建站之星域名及服务?
定制建站哪家更专业可靠?推荐榜单揭晓
建站168自助建站系统:快速模板定制与SEO优化指南
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何确认建站备案号应放置的具体位置?
*请认真填写需求信息,我们会在24小时内与您取得联系。