Android自定义对话框(Dialog)位置,大小

Android自定义对话框(Dialog)位置,大小

2014-03-20 14:21 22199人阅读 评论(1) 收藏 举报

  分类:

Android(181)

版权声明:本文为博主原创文章,未经博主允许不得转载。

代码:

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#00FF00"

android:orientation="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello" />

dialog_layout.xml

android:id="@+id/layout_root"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal"

android:padding="10dp" >

android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="10dp"

android:src="@drawable/ic_launcher" />

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="A Dialog"

android:textColor="#FFF" />

上一篇Android progressBar 自定义

下一篇Android项目中的assert文件下的html里的js交互

Android自定义对话框(Dialog)位置,大小

2014-03-20 14:21 22199人阅读 评论(1) 收藏 举报

  分类:

Android(181)

版权声明:本文为博主原创文章,未经博主允许不得转载。

代码:

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#00FF00"

android:orientation="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello" />

dialog_layout.xml

android:id="@+id/layout_root"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal"

android:padding="10dp" >

android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="10dp"

android:src="@drawable/ic_launcher" />

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="A Dialog"

android:textColor="#FFF" />

上一篇Android progressBar 自定义

下一篇Android项目中的assert文件下的html里的js交互


相关文章

  • Android中获取正在运行的服务
  • 转载请注明出处:http://blog.csdn.net/qinjuning 关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家 ...查看


  • android常见面试题
  • Android面试题班得瑞 (补充) 1.onCreate():当Activity被创建的时候调用(第一次).操作:设置布局文件,初始化视图,绑定数据文件等. 2.onStart():当Activity能被我们看到的时候. 3.onResu ...查看


  • 物联网应用开发论文
  • 武汉工商学院 信息工程学院 项目名称: 日程管理 学生姓名: 崔倍倍 学 号:班 级: 13物联本2 指导教师: 李凤麟 2016年6月18日 摘 要 随着科技时代的发展变迁,人们的生活变得快捷便利,但是随之而来的是人们的生活方式和生活习惯 ...查看


  • 智能手机编程教程
  • Android 程序开发初级教程(一) 功能: + Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的. + Dalvik virtul machine: 一个基于Linux 的虚拟 ...查看


  • skinmagic改变对话框皮肤[转]
  • 2010-06-06 01:37:21|  分类: 关于美化界面的文 |  标签: |字号大中小 订阅 skinMagic是什么? http://www.appspeed.com 内存资源? 和一个对话框比较 用皮肤和不用之前分别是3088 ...查看


  • 可视化学生成绩管理系统(QT)
  • 中国地质大学 计算机高级语言课程设计报告 (QT 设计) --学生成绩管理系统 班级:191142班 学号: 姓名: 日期:2015年7月2日 一 课程设计题目与要求 (包括题目与系统功能要求) [实习内容] C++语言,面向对象的分析与设 ...查看


  • 联想面试题
  • 1.activity的生命周期. onCreate: 在这里创建界面 ,做一些数据 的初始化工作 onStart: 到这一步变成用户可见不可交互 的 onResume: 变成和用户可交互 的,(在activity 栈系统通过栈的方式管理这些 ...查看


  • 基于安卓的安全卫士本科毕业设计论文
  • 摘 要 在移动互联网飞速发展的今天,智能手机成了人们沟通交流.了解外部信息的重要工具.从某种程度上说,智能手机相当于小型PC,其中有71.6%为Android手机用户.Android平台的的开源性使得市场上各种手机智能软件日益增多并且混乱, ...查看


  • 改变Android手机软件安装位置的解决办法
  • [教程] 改变Android手机软件安装位置的解决办法 谷 歌Android系统手机默认只能把软件安装在手机内存里,使本来就不大的手机内存显得捉襟见肘.如果你也是个手机软件狂人,喜欢尝试各种各样新奇有趣的软件,面对越来越少的手机内存空间,不 ...查看


热门内容