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()方法設置消息文本,對話框按鈕將會顯示。

希望這會有所幫助。