3

我正在制作一个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();
}

按钮似乎被推离了屏幕

让我知道是否需要更多信息。

4

1 回答 1

3

尽管您的示例代码没有使用它,但您是否碰巧通过使用setMessage()方法设置消息?AlertDialog.Builder

因为如果您的内容不适合屏幕,同时将自定义视图和消息设置到警报对话框构建器会产生您所描述的副作用。

要解决此问题,请将您的消息添加到您的自定义视图中,并且不要使用setMessage()方法设置消息文本,对话框按钮将可见。

希望这可以帮助。

于 2017-07-24T09:12:22.203 回答