DialogFragment太宽,无法居中

时间:2019-06-14 10:15:23

标签: android alertdialog android-dialogfragment android-dialog dialogfragment

我尝试Google已有相当长的时间,但所有答案似乎都不适合我。我在新的片段中有AlertDialog,无论我做什么,都不会自动居中。我觉得我缺少基本的东西,比如以错误的方式使视图膨胀。

这是现在的样子: AlertDialog not centered

我希望视图居中而不在左侧。只要按钮居中,去掉多余的空白也是可以的,但不是必须的。

这是我的代码:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
>

   <!--Row 1. (colors 1-4)-->
   <LinearLayout...>

   <!--Row 2. (colors 5-8)-->
   <LinearLayout...>

   <!--Row 3. (colors 9-12)-->
   <LinearLayout...>

</LinearLayout>

public class dialog_ThemePicker extends DialogFragment implements View.OnClickListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_themepicker, null);

    ...

    AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
    alertDialog.setTitle(R.string.dialog_theme_title);
    alertDialog.setView(view);
    alertDialog.show();

    return alertDialog;
}

我试图将整个XML包装到RelativeLayout中,与LayoutParams和StackOverflow的其他多个解决方案混淆。我想念什么?

2 个答案:

答案 0 :(得分:0)

尝试将match_parent设置为rootLayout宽度,然后将center选项设置为重力 这应该是这样。

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|center_vertical">


  <!--Row 1. (colors 1-4)-->
   <LinearLayout...>

   <!--Row 2. (colors 5-8)-->
   <LinearLayout...>

   <!--Row 3. (colors 9-12)-->
   <LinearLayout...>

</LinearLayout>

答案 1 :(得分:0)

您必须设置android:gravity="center"android:layout_width="match_parent"  在线性布局的根元素中将所有元素居中于根元素