簡體   English   中英

為什么Android AlertDialog沒有占據屏幕的全高

[英]Why Android AlertDialog is not taking full height of screen

我正在學習Android Studio並面臨Alertbox的問題。 為什么警告框在背景中不是透明的全高? 我搜索過它,但所有技巧都失敗了。 我是android studio的新手,所以你的一些解釋對我有幫助。

這是我的代碼。 最后的圖片顯示圖中的問題。

// get prompts.xml view
LayoutInflater li = LayoutInflater.from(this);
View promptsView = li.inflate(R.layout.add_group_popup, null);

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        this);

// set prompts.xml to alertdialog builder
alertDialogBuilder.setView(promptsView);

final EditText userInput = (EditText) promptsView
        .findViewById(R.id.editTextDialogUserInput);

// set dialog message
alertDialogBuilder
        .setCancelable(false)
        .setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        // get user input and set it to result
                        // edit text
                     //   result.setText(userInput.getText());
                    }
                })
        .setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        dialog.cancel();
                    }
                });

// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();

add_group_popup.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter the Group Name : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editTextDialogUserInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <requestFocus />

    </EditText>

</LinearLayout>

在此輸入圖像描述

我有同樣的問題,最后我可以通過將AlertDialog替換為Dialog來解決這個問題。

所以解決方案是這樣的:

Dialog dialog = 
    new Dialog(
        this,
        android.R.style.Theme_DeviceDefault_Light_NoActionBar_Fullscreen
    );
dialog.setContentView(R.layout.yourCustomLayoutDialog);

希望這有幫助..

您可以顯式設置對話框的高度和寬度以匹配onStart中的屏幕

public void onStart() {
  super.onStart();
  DisplayMetrics metrics = getResources().getDisplayMetrics();
  int width = metrics.widthPixels;
  int height = metrics.heightPixels;
  getDialog().getWindow().setLayout(width, height);
}

當我在活動中編寫類似的方法時我偶然看到並從片段中使用它,它是全屏顯示的。

public AlertDialog showAlert(String message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AppTheme);
        builder.setMessage(message);
        builder.setPositiveButton("OK", null);
        return builder.show();
}

使用Window manager以編程方式設置對話框大小。

 WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(rate.getWindow().getAttributes());
    lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
    alertdialog.show();
    alertdialog.getWindow().setAttributes(lp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM