19

Ok я действительно путают здесь о том, как сделать пользовательский диалог должным образом с использованием новейших AppCompat v23.0.1 Вот несколько способовПравильный способ сделать диалог пользовательского материала с AppCompat 23+

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

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; 
    } 
} 

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

ripple effect fail

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

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

+1

Вы используете библиотеки поддержки совместимости приложений, а 'AppCompatDialogFragment' дает вам желаемое поведение, поэтому, я думаю, вы уже ответили на свой вопрос. –

+0

Да, я думаю, 'AppCompatDialogFragment' работает так, как ожидалось, но я просто хотел узнать, какой лучший подход для таких диалоговых окон. Большинство библиотечных диалоговых библиотек используют первый способ. Вот почему я был немного скептически, но спасибо за ваш ответ – ThanosFisherman

+0

Как добавить положительную и отрицательную кнопку в AppCompatDialogFragment? –

ответ

11

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

также дает желаемый effact;)

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^