2012-05-03 221 views
1

我想顯示警報對話框設備的屏幕大小。我通過這個鏈接得到了解決方案How to make an alert dialog fill 90% of screen size?我使用給定的解決方案,它工作得很好,但我的警報消息顯示的尺寸非常小。我們甚至無法在橫向方向上發佈信息。我已經使用了下面的代碼。警報消息未顯示在警報對話框中?

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage(R.string.app_description).setPositiveButton(
        "Ok", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.dismiss(); 
         } 
        }); 
      builder.Title(title); 

      Dialog d = builder.setView(new View(this)).create(); 
      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); 

如何設置消息,以便它能正確顯示在對話窗口中?

在此先感謝 普什帕

+0

它在我的手機中佔據了近90%的份額。你打給誰的警報對話框的父母是什麼? 。 – Niranjan

+0

確定按鈕是正確的,即它位於窗口的底部。唯一的事情是我沒有得到建設者類的消息。 – pushpa

回答

0

請檢查此代碼,並告訴我這是否是您真正想實現的目標?

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

    // Creates textview 
    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); //adds textview to llayout 

    builder.setMessage("Title").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); 
+0

非常感謝。這很好。但我觀察到的是,如果設備方向在對話框位於前面時發生變化,則必須按兩次OK按鈕才能關閉對話框。如何避免這種情況? – pushpa

+0

@pushpa如果它正在工作,請考慮接受這個解決方案。讓我檢查一下方向問題。 – Niranjan

+0

@ ngen:謝謝,即使重力居中,對話框也會出現在頂部窗口。如何使對話中心。 – pushpa

1

通過默認情況下采用離子不能設置文字大小。你可以做一件簡單的事情。 請求一個XML並將該XML充滿並傳遞給構建器視圖。

builder.setView(view) 

沒什麼,但你是設置對話框的視圖。 並且該視圖將處理所有的觸摸。您可以指定xml中視圖的高度和寬度,包括文本大小。

+0

謝謝santhu,這很好。但是,如果設備方向發生變化,當對話框在前面時,我們應該按兩次確定按鈕(與我們的方向更改次數一樣)以關閉對話框。 – pushpa