2011-10-27 94 views
2

我在使用自定義視圖的應用程序中有許多對話框。在Android 4之前,這些對話框的高度和寬度正在根據內容進行調整。在Andorid 4仿真器中,這種行爲已經發生了變化。它看起來像寬度將伸展以適應內容,但它有一個最小的大小低於它不會去。我可以擴大對話範圍,但對於狹義內容,對話框不會像我預期的那樣減小。因此我的內容顯示在一個覆蓋範圍較寬的對話框的左側。所有完美的3.0。我曾嘗試過:在Android 4中設置對話框寬度

dialog.setContentView(R.layout.help_dialog); 
dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

這沒有效果。此外,標題的內容不會強制對話擴展。任何想法不勝感激。

+0

也有同樣的問題? ,任何答案? – Chris

回答

2

我有同樣的問題 - 它固定它:

final Dialog help = new Dialog(this); 
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
lp.copyFrom(help.getWindow().getAttributes()); 

lp.width = (int) (width); 
lp.height = (int) (height); 

help.show(); 
help.getWindow().setAttributes(lp); 
0

我發現,你可以設置對話框中的邊距和填充以可抽拉XML

Dialog dialog = new Dialog(this); 

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.getWindow().setBackgroundDrawableResource(r.drawable.your_drawable); 
    dialog.getWindow().setContentView(R.layout.your_custom_dialog_layout); 
    dialog.getWindow().getAttributes().width = LayoutParams.FILL_PARENT; 
    dialog.show(); 

看看在r.drawable.your_drawable

<?xml version="1.0" encoding="utf-8"?> 
<layer-list> 
    <item 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:left="70dp" 
     android:right="70dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/white" /> 
      <corners android:radius="4dp" /> 
      <padding 
       android:bottom="70dip" 
       android:left="70dip" 
       android:right="70dip" 
       android:top="70dip" /> 
     </shape> 
    </item> 
</layer-list> 

通過設置項目android:向右/左邊緣可繪製。 使用形狀填充確保custom_dialog_layout的字段不超過對話背景的寬度。

我希望它能幫助你一點點。