一.概述
在Android开发中,我们如果创建一个Dialog之后,它的大小是系统默认的,那么我们能不能改变这个大小呢,答案是肯定的,先看效果图,我们分别弹出三个大小不一样的对话框。
二.实现
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:onClick="show"
android:layout_height="wrap_content"
android:text="弹出四分之一" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="show"
android:text="弹出一半" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:onClick="show"
android:layout_height="wrap_content"
android:text="弹出全屏" />
</LinearLayout>
很简单,三个按钮,点击弹出不同的对话框
java代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void show(View view) {
switch (view.getId()) {
case R.id.button1:
showDialog(0.25f);
break;
case R.id.button2:
showDialog(0.5f);
break;
case R.id.button3:
showDialog(1f);
break;
}
}
public void showDialog(float scale) {
// 创建对话框对象
Dialog dialog = new Dialog(this);
// 设置标题
dialog.setTitle("提示信息");
// 给对话框填充布局
dialog.setContentView(R.layout.dialog_layout);
// 获得当前activity所在的window对象
Window window = dialog.getWindow();
// 获得代表当前window属性的对象
WindowManager.LayoutParams params = window.getAttributes();
Point point = new Point();
Display display = getWindowManager().getDefaultDisplay();
// 将window的宽高信息保存在point中
display.getSize(point);
// 将设置后的大小赋值给window的宽高
params.width = (int) (point.x * scale);
params.height = (int) (point.y * scale);
// 方式一:设置属性
window.setAttributes(params);
// 方式二:当window属性改变的时候也会调用此方法,同样可以实现
// dialog.onWindowAttributesChanged(params);
dialog.show();
}
}