Android 文档不同于 Android Studio 警告

Android documentation differs from Android Studio warning

我目前正在实现一个 AlertDialog,其中有一个 CheckBox。为了做到这一点,我膨胀了一个包含 CheckBox 的视图,然后我使用 setView(View) 方法将它添加到我的对话框中,但是通过这种方式我得到了巨大的填充。根据我的阅读,该问题的解决方案显然是使用 setView(View, int, int, int, int) 方法(它为所有方向设置填充),但是当我尝试实现该 android studio 时出现错误(可以通过添加 @SuppressLint("RestrictedApi") 来避免,但我不知道那是什么意思,所以如果你知道,请毫不犹豫地向我解释)然后说这个方法已被弃用,奇怪的是在文档中(右here),没有说这种方法已被弃用,所以我想知道,在这种情况下,我应该相信文档还是androidStudio? (如果使用第二种方法是个好主意)

这里是 AlertDialog 的代码:

@SuppressLint("RestrictedApi")
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

    View checkBoxView = View.inflate(getContext(), R.layout.checkbox, null);
    CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox_dontaskmeagain);

    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            SharedPrefUtils.setShowAlertDialog(getContext(), b);
        }
    });

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(R.string.alert_everyday_dialog_message);
    builder.setTitle(R.string.alert_dialog_title)
            .setView(checkBoxView, 0, 0, 0, 0) //this apparently is deprecated
            .setPositiveButton(R.string.alert_dialog_delete, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    mListener.onEverydayDialogPositiveClick(DeleteTaskEverydayDialog.this);
                }
            })
            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    mListener.onEverydayDialogNegativeClick(DeleteTaskEverydayDialog.this);
                }
            });
    return builder.create();
}

请注意,这是从 AlertDialog 扩展的自定义 class,其中还有一些其他功能,但我认为不需要它们,如果您认为需要,请告诉我,我会提供他们

您正在查看错误的文档 - 即 AlertDialog。您调用的代码在 AlertDialog.Builder。它没有任何文档,因为它用 @hide 注释,因此被排除在 SDK 及其文档之外。它还具有 @RestrictTo@Deprecated 注释,如 support library source.

中所示

javadoc 中给出了一些隐藏的基本原理:

This is currently hidden because it seems like people should just be able to put padding around the view.

一般来说,您不应该调用隐藏或受限的方法。寻找其他方式来实现您的目标。