我正在尝试创建一个自定义对话框,并将其内容置于中心位置,但它始终以左对齐方式结束。这是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);
我在这里缺少什么?谢谢你的帮助。
图像:
答案 0 :(得分:11)
尝试编辑此内容:a:layout_gravity="center_horizontal|center_vertical"
或
使用Relative_Layout并将线性布局与父级中心对齐,fill_parent
为线性相对wrap_content
。
虽然它与我合作在中心
答案 1 :(得分:2)
修改Dialog的ViewGroup(FrameLayout),它保存您的内容布局。我使用静态方法并在DialogFragments中的onActivityCreated()内调用它:
/**
* 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);
}
答案 2 :(得分:0)
你正在做layout_gravity这是好事,但是由于你做到最外面的布局,它不能相对于它周围的内容定位自己。
我认为将上面的布局包装在另一个布局中就可以了
答案 3 :(得分:0)
您可以尝试将LinearLayout layout_gravity更改为重力吗?请参阅此处说明的差异:Gravity and layout_gravity on Android