本文实例讲述了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原理实例解析
# 出现在
# 设置为
# 有一
# 值为
# 小段
# 都是
# 进阶
# 直接调用
# 相关内容
# 可以用
# 但在
# 感兴趣
# 给大家
# 相对于
# 更多关于
# 这可
# 解决方法
# 机上
相关文章:
建站主机系统SEO优化与智能配置核心关键词操作指南
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
如何高效配置香港服务器实现快速建站?
如何通过多用户协作模板快速搭建高效企业网站?
建站之星导航菜单设置与功能模块配置全攻略
孙琪峥织梦建站教程如何优化数据库安全?
如何在IIS中配置站点IP、端口及主机头?
微信小程序 五星评分(包括半颗星评分)实例代码
电商网站制作公司有哪些,1688网是什么意思?
,想在网上投简历,哪几个网站比较好?
如何快速启动建站代理加盟业务?
建站VPS配置与SEO优化指南:关键词排名提升策略
制作门户网站的参考文献在哪,小说网站怎么建立?
建站之星客服服务时间及联系方式如何?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何基于云服务器快速搭建个人网站?
建站之星收费标准详解:套餐费用及年费价格表一览
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
制作网站公司那家好,网络公司是做什么的?
Thinkphp 中 distinct 的用法解析
如何获取开源自助建站系统免费下载链接?
建站之家VIP精选网站模板与SEO优化教程整合指南
网站插件制作软件免费下载,网页视频怎么下到本地插件?
Android滚轮选择时间控件使用详解
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
制作网站的软件免费下载,免费制作app哪个平台好?
建站主机选购指南:核心配置优化与品牌推荐方案
建站之星如何优化SEO以实现高效排名?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
如何在IIS7中新建站点?详细步骤解析
IOS倒计时设置UIButton标题title的抖动问题
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
高端网站建设与定制开发一站式解决方案 中企动力
建站主机选哪家性价比最高?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
专业网站建设制作报价,网页设计制作要考什么证?
如何快速搭建高效服务器建站系统?
宁波免费建站如何选择可靠模板与平台?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何快速搭建个人网站并优化SEO?
建站之星安装路径如何正确选择及配置?
建站主机与服务器功能差异如何区分?
如何快速生成可下载的建站源码工具?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
宁波自助建站系统如何快速打造专业企业网站?
如何快速生成高效建站系统源代码?
*请认真填写需求信息,我们会在24小时内与您取得联系。