Как разместить макет внутри диалогового окна Android?

Я пытаюсь создать настраиваемый диалог и сосредоточиться на его содержании, но он всегда заканчивается выравниванием по левому краю. Вот aboutdialog.xml:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a="http://schemas.android.com/apk/res/android" a:orientation="vertical" a:id="@+id/AboutDialogLayout" a:layout_width="fill_parent" a:layout_height="fill_parent" a:layout_gravity="center_horizontal" a:gravity="center_horizontal"> <ImageView a:id="@+id/imageView1" a:src="@drawable/pricebook" a:layout_height="wrap_content" a:layout_width="wrap_content"/> <TextView a:layout_height="wrap_content" a:textAppearance="?android:attr/textAppearanceLarge" a:id="@+id/textView1" a:text="Price Book" a:layout_width="wrap_content"/> <TextView a:layout_height="wrap_content" a:id="@+id/textView2" a:layout_width="wrap_content" a:text="foo"/> </LinearLayout> 

И мой (релевантный) код:

 Dialog d = new Dialog(this); d.setContentView(R.layout.aboutdialog); d.setTitle(R.string.app_name); 

Что мне здесь не хватает? Спасибо за помощь.

Образ: Снимок экрана диалогового окна

Solutions Collecting From Web of "Как разместить макет внутри диалогового окна Android?"

Попробуйте изменить на это: a:layout_gravity="center_horizontal|center_vertical"
ИЛИ
Используйте Relative_Layout и выровняйте линейный макет с центром родителя с помощью fill_parent для Relative wrap_content для Linear.

Хотя он работает со мной по центру

Modify Dialog ViewGroup (FrameLayout), который содержит макет содержимого. Я использую статический метод и вызываю его внутри onActivityCreated () в DialogFragments:

 /** * Center dialog content inside available space * @param dialog */ public static void centerDialogContent(Dialog dialog) { ViewGroup decorView = (ViewGroup) dialog.getWindow().getDecorView(); View content = decorView.getChildAt(0); FrameLayout.LayoutParams contentParams = (FrameLayout.LayoutParams)content.getLayoutParams(); contentParams.gravity = Gravity.CENTER; content.setLayoutParams(contentParams); } 

Вы выполняете layout_gravity, что хорошо, но поскольку вы делаете это с помощью внешнего макета, он не может позиционировать себя относительно того, что вокруг него.

Я думаю, что обертывание вышеупомянутого макета внутри другого макета сделало бы это

Можете ли вы попытаться изменить линейную ориентацию LinearLayout на простоту гравитации? См. Разницу, объясненную здесь: Gravity и layout_gravity на Android