0

我正在制作自定义DialogFragment,显示可选数据列表。该列表太长而无法在屏幕上滚动。对于高达API 23,一切似乎都很好,但是当我在API 24+上测试时,DialogFragment的按钮不再可见。我查看了Missing buttons on AlertDialog | Android 7.0 (Nexus 5x),但这似乎并不适用,因为当我减少列表中的内容数量时,我的按钮确实显示出来,因此它们都适合在屏幕上。我怎样才能让我的按钮可见?DialogFragment按钮弹出屏幕API 24及以上

我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(); 
} 

Buttons appear to be pushed off the screen

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

回答

0

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

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

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

希望这会有所帮助。