您的位置:首页 > 其它

设置对话框大小和位置

2014-03-09 21:59 465 查看
实际中,经常需要比较灵活地控制对话框大小和位置。Android中提供了相应的API,使用起来也还算方便,下面举个例子:

MainActivity:

package com.home.dialog;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		ImageView iv = new ImageView(this);
		iv.setImageResource(R.drawable.ic_launcher);
		Dialog dialog = new Dialog(this, R.style.NoBorderDialog);
		dialog.setContentView(iv);
		dialog.show();
		Window dialogWindow = dialog.getWindow();
		// 设置大概位置
		dialogWindow.setGravity(Gravity.LEFT);
		// dialogWindow.setGravity(Gravity.RIGHT);
		// dialogWindow.setGravity(Gravity.TOP);
		// dialogWindow.setGravity(Gravity.BOTTOM);
		// dialogWindow.setGravity(Gravity.CENTER_HORIZONTAL);
		// dialogWindow.setGravity(Gravity.CENTER_VERTICAL);
		// dialogWindow.setGravity(Gravity.CENTER);
		// 也可以进行组合设置,如
//		dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);

		// 设置具体参数
		WindowManager.LayoutParams lp = dialogWindow.getAttributes();
		// 设置偏移
		lp.x = 30;
		lp.y = 50;

		// 设置宽高
		lp.width = 300;
		lp.height = 300;

		// 也可按屏幕宽高比例进行设置宽高
		Display display = getWindowManager().getDefaultDisplay();
		lp.width = (int) (display.getWidth() * 0.8);
		lp.height = (int) (display.getHeight() * 0.4);

		// 设置透明度
		lp.alpha = 0.7f;
		dialogWindow.setAttributes(lp);
	}

}

对于设置lp偏移,引用网上的解释:

/*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: