Настройка ширины диалога в Android 4 - PullRequest
2 голосов
/ 27 октября 2011

У меня есть несколько диалогов в приложении, где используется пользовательский вид. До Android 4 высота и ширина этих диалогов менялись в соответствии с содержанием. В эмуляторе Andorid 4 это поведение изменилось. Похоже, ширина будет растягиваться, чтобы вместить контент, но имеет минимальный размер, ниже которого он не пойдет. Я могу сделать диалог шире, но для узкого контента диалоговое окно не будет уменьшаться, как я ожидал. Поэтому мой контент отображается в левой части широкого диалогового окна. Все отлично работает на 3.0. Я пробовал:

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

Это не имеет никакого эффекта. Также содержание заголовка не заставляет диалог расширяться. Любые мысли с благодарностью.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

У меня была такая же проблема - исправил с ней:

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 голосов
/ 01 августа 2012

Я обнаружил, что вы можете установить поля и отступы в диалоговом окне в формате 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>

Byнастройка элемента android: вправо / влево это поле для рисования.С заполнением формы вы убедитесь, что поля с custom_dialog_layout не превышают ширину фона диалога.

Надеюсь, это вам немного поможет.

...