Подтвердить что ты не робот

Правильный способ создания диалогового окна настраиваемого материала с помощью приложения appCompat 23+

Хорошо, я действительно запутался в том, как правильно настроить пользовательский диалог, используя последний appcompat v23.0.1 Вот несколько способов:

Первый способ:

public class AddTipDialogFrag extends DialogFragment
{
 @Override
 public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        int title = getArguments().getInt("title");
        AppCompatDialog dialogCompat = new AppCompatDialog(getActivity(), R.style.MyAlertDialogStyle);
        dialogCompat.setTitle(title); //doesn't work btw
        dialogCompat.setContentView(R.layout.add_tip_fragment);
        return dialogCompat;
    }
}

Второй способ:

public class AddTipDialogFrag extends AppCompatDialogFragment
{ 
   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.add_tip_fragment,container, false);
        int title = getArguments().getInt("title");
        getDialog().setTitle(title);
        return view;
    }
}

Оба способа, похоже, дают одинаковый результат. Лично я предпочитаю первый способ, но есть проблема с эффектом пульсации, когда он вырезается, когда граница просмотра custem заканчивается, как вы можете видеть на рисунке ниже.

Неисправность эффекта пульсации

Это ошибка? (Должно быть!) Могу ли я исправить это или я должен просто перейти ко второму пути? (Что отлично работает с эффектом пульсации). Каков наилучший подход между этими двумя способами, рассматриваемыми большинством библиотечных диалоговых библиотек, использует первый способ?

РЕДАКТИРОВАТЬ: срыв пульсации на первом пути, похоже, больше не возникает, поэтому я все еще не уверен, что это правильный путь для этих двух.

4b9b3361

Ответ 1

Второй подход выглядит лучше, чем AppCompatDialogFragment extends DialogFragment и делает все тяжелое поднятие для вас. Также он выглядит более чистым с абстракцией ненужных деталей (inline with OOP).

Также дает желаемый эффект;)

Ответ 2

Второй подход лучше, потому что это специальная версия DialogFragment, которая использует AppCompatDialog вместо диалогового окна с платформой. AppCompatDialogFragment является подклассом DialogFragment и наследует все свойства DialogFragment.