Я столкнулся с этим около года назад и исправил это с помощью странного кода.Опять же, приложение, над которым я работаю, имеет фрагмент, который должен нормально отображаться на телефоне, но в диалоге на планшете.Я решил это так:
public class MyDialogFragment extends DialogFragment {
private View mLayout;
private ViewGroup mContainer;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mContainer = container;
if (getShowsDialog()) {
// one could return null here, or be nice and call super()
return super.onCreateView(inflater, container, savedInstanceState);
}
return getLayout(inflater, container);
}
private View getLayout(LayoutInflater inflater, ViewGroup container) {
mLayout = inflater.inflate(R.layout.my_layout, container, false);
return mLayout;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getContext())
.setPositiveButton(R.string.ok, null)
.setNegativeButton(R.string.cancel, null)
.setNeutralButton(R.string.filter_clear_selection, null)
.setView(getLayout(LayoutInflater.from(getContext()), mContainer))
.create()
;
}
}
Это позволяет мне добавить свой фрагмент в качестве любого обычного фрагмента (в макете), но также отображать его в виде диалога, в котором он работает автономно.