В чем разница между Dialog.setContentView (View) и AlertDialog.setView (View) - PullRequest
11 голосов
/ 18 мая 2011

Я работаю над созданием настраиваемого диалога для получения ввода от пользователя. Я заметил, что когда я использую AlertDialog, я могу добавить виджеты, такие как EditText, к AlertDialog, используя метод setView(). Я изучаю настройку AlertDialog и заметил, что Dialog имеет метод setContentView(). В подклассе AlertDialog я мог бы использовать либо setContentView(), либо setView().

Одно отличие, которое я заметил, - когда я использую setView() на AlertDialog, я вижу кнопки «Позитивные» и «Отрицательные». В моем подклассе AlertDialog, используя setContentView(), я не получаю кнопки Положительный и Отрицательный.

Может кто-нибудь объяснить другие различия?

Спасибо.

Ответы [ 3 ]

26 голосов
/ 08 ноября 2011

Если я правильно понял, setContentView раздувает все диалоговое окно с вашей пользовательской раскладкой.Название, значок, кнопки ... ничего не осталось.setView с другой стороны устанавливает макет представления между кнопками и заголовком.

See image

2 голосов
/ 21 августа 2017

setContentView - метод родительского класса AlertDialog, это означает, что все диалоговые окна, и setView - метод AlertController, в представлении окон AlertDialog есть topPanel, contentPanel, buttonPanel.setView, устанавливающий только customView для contentpanel.

0 голосов
/ 28 января 2014

Кстати, вы также можете вызвать метод setView AlertDialogs, который, по-видимому, также удаляет лишние «промежутки» вокруг представления.

void setView (представление view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom)

вот так.

alertDialog.setView (MyView, 0,0,0,0);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...