2

カスタムビューが使用されるアプリケーションにいくつかのダイアログがあります。Android 4より前では、これらのダイアログの高さと幅は、コンテンツに応じて予想どおりに調整されていました。Andorid 4エミュレーターでは、この動作が変更されました。幅はコンテンツを収容するために伸びるように見えますが、それを下回ると収まらない最小サイズがあります。ダイアログを広くすることはできますが、コンテンツが狭い場合、ダイアログボックスは期待どおりに縮小しません。したがって、私のコンテンツは、幅の広いダイアログボックスの左側に表示されます。すべてが3.0で完全に機能します。私が試してみました:

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

これは効果がありません。また、タイトルの内容によってダイアログが強制的に拡張されることはありません。どんな考えでも大歓迎です。

4

2 に答える 2

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);
于 2012-03-22T17:39:18.443 に答える
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:right/left を設定することで、ドローアブルをマージンします。形状のパディングを使用して、custom_dialog_layout 内のフィールドがダイアログの背景の幅を超えないようにします。

少しでもお役に立てば幸いです。

于 2012-08-01T13:47:57.513 に答える