DialogFragment слишком широкий и не может центрировать его

Я пытался использовать Google в течение некоторого времени, и ни один из ответов, похоже, не работает для меня. У меня есть AlertDialog в новом фрагменте, и что бы я ни делал, он просто не будет центрироваться. Я чувствую, что упускаю что-то основное, например, неправильно раздуваю представление.

Вот как это выглядит сейчас: AlertDialog не по центру

Я хочу, чтобы взгляды были центрированы, а не слева. Удаление лишнего пробела было бы неплохо, но не обязательно, пока кнопки расположены по центру.

Вот как выглядит мой код:

<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. Что мне не хватает?

можете ли вы опубликовать свой код внутри линейного макета

Abdul 14.06.2019 12:26

Если вы найдете мой ответ полезным, пожалуйста, проголосуйте за него.

Jasurbek 01.07.2020 19:14
1
2
228
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте указать 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>

вы должны установить android:gravity = "center" и android:layout_width = "match_parent" в корневом элементе вашего линейного макета, чтобы центрировать все элементы внутри корневого элемента

Другие вопросы по теме