8

我正在开发我想将对话框显示为屏幕大小的应用程序。所以我使用了下面的代码。我通过这里得到了解决方案警报消息没有显示在警报对话框中?

 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,但没有奏效。如果设备方向发生变化,我需要再按一次确定按钮来关闭对话框。如何解决这个问题?

在此先感谢 Pushpa

4

6 回答 6

9

我有点晚了,但迟到总比永远好 :-) 你可以使用下面的代码:(我也看到了这里

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();

希望我帮助...

于 2013-09-02T22:26:41.197 回答
4

这对我有用:

lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
于 2012-05-04T11:12:05.987 回答
2

尝试使用 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 时

于 2012-05-04T10:56:50.580 回答
1

也许这有效:

WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();

WMLP.gravity = Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL

dialog.getWindow().setAttributes(WMLP);
于 2012-05-04T11:14:13.040 回答
0

注意:- 这是用于“自定义布局”... :)

我也在为此苦苦挣扎,经过几个小时的苦苦挣扎,我得出了这个结果

早些时候我是这样创建对话的:-

 final Dialog dialog = new Dialog(PopupforeditActivity.this);

添加样式“No titleBar”后,它开始按照我创建的方式获取布局。

为此,您必须使用参数“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 ..

希望它会有所帮助..因为它帮助了我:)

于 2012-05-14T05:05:10.823 回答
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>
  • 我使用 android:layout_gravity 在中心显示对话框。
  • 设置 minWidth 是因为否则对话框看起来更窄。
  • layout_margin 已设置,因此在较小的屏幕中对话框周围有足够的边距。

在 android:layout_gravity="center" 之前

前

在 android:layout_gravity="center" 之后

后

于 2020-12-29T04:41:58.257 回答