【发布时间】:2016-07-01 09:09:54
【问题描述】:
我目前有以下代码来构建带有ProgressBar 的等待对话框:
LayoutInflater factory = LayoutInflater.from(TherapistActivity.this);
View view = factory.inflate(R.layout.waitdialog, null);
dialog = new AlertDialog.Builder(TherapistActivity.this)
.setView(view)
.setCancelable(false)
.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
wmlp.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
wmlp.x = 0; //x position
wmlp.y = Math.round(metrics.density * 100); //y position
wmlp.width = Math.round(metrics.density * 55); //doesn't appear to work
这是我的对话框的 XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/top"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="55dp"
android:layout_height="55dp"
android:background="@drawable/boxbkg">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
我希望我的对话框是一个小方形对话框,只有一个旋转的ProgressBar。但是,即使使用wmlp.width = Math.round(metrics.density * 55),对话框仍然很宽。
解决这个问题的正确方法是什么?
【问题讨论】:
-
dialog是一个AlertDialog,你必须在最后调用dialog.show(),否则它不会显示任何内容。不幸的是,即使使用已接受答案中的附加代码,这也不起作用。
标签: android android-alertdialog android-progressbar layoutparams android-windowmanager