2011-10-27 15 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

私は同じ問題を抱えていた - それでそれを固定:私はあなたが見て描画可能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(); 

をダイアログボックスのマージンとパディングを設定できることが判明

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

.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> 

項目をアンドロイド:左右に設定すると、ドロウアブルの余白になります。 シェイプパディングでは、custom_dialog_layoutのフィールドがダイアログの背景の幅を超えていないことを確認します。

私はそれがあなたを少し助けてくれることを願っています。

関連する問題