Android: отображение пользовательского диалога в центре контейнера

Как отобразить пользовательский диалог как центр контейнера?

Dialog customdialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar); 
Window window = customdialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
window.setGravity(Gravity.CENTER);

R.style.Theme_Translucent_NoTitleBar - используется для удаления границы для cutomdialog. Как только я использую эту строку, диалог появится в верхнем углу планшета?

Может ли кто-нибудь помочь мне решить эту проблему?

Ответы

Ответ 1

Измените fill_parent на wrap_content.I надеюсь, что это будет проблема, когда диалог появится в углу действия. Он занимает пространство всего макета. Так что это может помочь вам получить то, что вам действительно нужно.

Window window = customdialog.getWindow();
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);

Ответ 2

Я добавил это в пользовательский стиль диалога, и он работал нормально.

<item name="android:layout_gravity">center</item>

Ширину и высоту моего диалога устанавливают на wrap_content. Родитель стиля

Родитель = "@андроид: стиль /Theme.Light"

Ответ 3

Я поеду за этой частью кода:

        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        Window window = dialog.getWindow();
        lp.copyFrom(window.getAttributes());
        //This makes the dialog take up the full width
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(lp);

В диалоговом окне отображается объект диалога. Внутри макета диалогового окна вы можете определить вид макета по своему усмотрению: по центру или нет.

Ответ 4

Я использую этот код и проблема решена

Window window = alertDialog.getWindow();
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);