全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android编程自定义对话框(Dialog)位置及大小的方法

本文实例讲述了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小时内与您取得联系。