我正在开发应用程序,我希望将对话框显示为屏幕大小。所以我使用下面的代码。我通过这里得到了解决方案Alert message is not displaying in alert dialog box?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
TextView title = new TextView(this);
title.setText("DM2");
title.setBackgroundColor(Color.DKGRAY);
title.setPadding(10, 10, 10, 10);
title.setGravity(Gravity.CENTER);
title.setTextColor(Color.WHITE);
title.setTextSize(20);
TextView text = new TextView(this);
text.setText("Hello This text");
text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
text.setTextSize(20);
text.setGravity(Gravity.CENTER);
//Creates a linearlayout layout and sets it with initial params
LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ll.setGravity(Gravity.CENTER);
ll.addView(text);
builder.setCustomTitle(title);
builder.setPositiveButton(
"Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
Dialog d = builder.setView(ll).create();
//Fills up the entire Screen
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(d.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.FILL_PARENT;
lp.height = WindowManager.LayoutParams.FILL_PARENT;
d.show();
d.getWindow().setAttributes(lp);
但是我希望对话框出现在中心对齐的位置。现在它显示在窗口的顶部。 我尝试使用lp.garvity = Gravity.center,但没有用。 如果设备方向改变,我需要再按ok按钮关闭对话框。如何解决这个问题?
提前致谢 普什帕
答案 0 :(得分:6)
我迟到了,但迟到的话要好一点:-) 你可以使用下面的代码:(我也看到了here)
dialog = new Dialog(activity, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.activity_upload_photo_dialog);
Window window = dialog.getWindow();
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);
//The below code is EXTRA - to dim the parent view by 70%
LayoutParams lp = window.getAttributes();
lp.dimAmount = 0.7f;
lp.flags = LayoutParams.FLAG_DIM_BEHIND;
dialog.getWindow().setAttributes(lp);
//Show the dialog
dialog.show();
希望我帮助过......
答案 1 :(得分:3)
这对我有用:
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
答案 2 :(得分:1)
也许这有效:
WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
WMLP.gravity = Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL
dialog.getWindow().setAttributes(WMLP);
答案 3 :(得分:0)
尝试使用android:layout_gravity =“center”而不是android:gravity =“center”...它可能对你有帮助..
android:layout_gravity="center"
或
你可以试试这个..
<activity android:theme="@android:style/Theme.Dialog"
android:name=".Splash">
</activity>
编写完整的xml代码并制作简单的Activty并添加一个属性 AndroidManifest.xml,当您将Activity注册到 的AndroidManifest.xml
答案 4 :(得分:0)
注意: - 这是针对“自定义布局”......:)
我一直在努力奋斗,经过几个小时的努力,我得到了这个结果
早些时候我正在创建这样的dilaoge: -
final Dialog dialog = new Dialog(PopupforeditActivity.this);
添加样式“No titleBar”后,它开始以我创建的方式获取布局。
为此你必须用params“fillParent”创建布局 并创建像这样的对话
final Dialog dialog = new Dialog(PopupforeditActivity.this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.dialog_billing_cart);
dialog.setCancelable(true);
以上是编码部分
你在Layout
部分
将整个布局放在RelativeLayout
并提供您的布局属性android:layout_centerInParent="true"
例如: -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent" >
<!--Your Layout-->
<ScrollView
android:id="@+id/scrlView_FormHolder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
</ScrollView>
</RelativeLayout>
如果您不想错过“标题”您可以在自定义布局中将其作为TextView ..
希望它会有所帮助.. 因为它帮助了我:)
答案 5 :(得分:0)
我用这种风格在android中心显示对话框
<style name="CustomDialogue" parent="Theme.MaterialComponents.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:layout_gravity">center</item>
<item name="android:minWidth" type="dimen">600dp</item>
<item name="android:layout_margin" type="dimen">8dp</item>
</style>