Кнопки DialogFragment выталкиваются за пределы экрана API 24 и выше

Я делаю пользовательский DialogFragment, который отображает выбираемый список данных. Список слишком длинный, чтобы уместиться на экране без прокрутки. До API 23 все работает нормально, но когда я тестирую API 24+, кнопки DialogFragment больше не видны. Я просмотрел отсутствующие кнопки в AlertDialog | Android 7.0 (Nexus 5x), но, похоже, это неприменимо, потому что мои кнопки появляются, когда я уменьшаю количество содержимого в списке, чтобы оно полностью помещалось на экране. Как я могу сделать свои кнопки видимыми?

Мой метод onCreateDialog():

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final View dialogView = View.inflate(getContext(), android.R.layout.select_dialog_multichoice, null);

    builder.setView(dialogView)
            .setTitle(R.string.muscle_groups)
            .setMultiChoiceItems(Exercise.MUSCLE_GROUPS, selectionTrackingArray, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    ...
                }
            })
            .setPositiveButton(R.string.affirmative, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ...
                }
            })
            .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

    return builder.create();
}

Кнопки кажутся нажатыми за пределы экрана

Дайте мне знать, если нужна дополнительная информация.




Ответы (1)


Вы случайно не установили сообщение, используя метод setMessage() AlertDialog.Builder, хотя в вашем примере кода он не используется?

Потому что, если у вас есть контент, который не помещается на экране, одновременная настройка пользовательского представления и сообщения для построителя диалогового окна предупреждения имеет побочный эффект, как вы описали.

Чтобы решить эту проблему, добавьте свое сообщение в свой пользовательский вид и не устанавливайте текст сообщения с помощью метода setMessage(), кнопки диалога будут видны.

Надеюсь это поможет.

person CanC    schedule 24.07.2017