Настраиваемый предупреждающий диалог, получающий нежелательное дополнение

Я попытался создать настраиваемый диалог оповещений, и он работает очень хорошо. Функциональность работает отлично, но представление ведет себя странным образом. Диалоговое окно состоит из кнопки и списка. Как вы увидите на скриншоте ниже, кнопка получает маржу сверху и снизу.

Я не вижу причин для этих полей, и я был бы очень признателен за помощь 🙂

По какой-то причине я не могу опубликовать свой xml-макет, но я могу уговорить вас, что он не содержит прокрутки или поля любого типа

Код Java:

View dialogView = ((LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.choose_catagory_dialog_layout, null, false); Button footerButton = (Button) dialogView.findViewById(R.id.choose_catagory_dialog_footer_button); footerButton.setOnClickListener(ButtonClickEvent); builder = new AlertDialog.Builder(mContext); builder.setView(dialogView); builder.setTitle(R.string.choose_catagory); builder.setAdapter(spinnerAdapter, ListclickEvent); alert = builder.create(); alert.getListView().setVerticalFadingEdgeEnabled(false); alert.setOwnerActivity((Activity) mContext); 

Скриншот:

http://cl.ly/3S2y3p3E0e3H2o1I272m

CustomPanel из AlertDialog имеет верхнее и нижнее дополнение 5dp. Вы можете переопределить их, используя:

 alert.setView(dialogView, 0, 0, 0, 0); 

Для меня казалось, что builder.setView(dialogView, 0, 0, 0, 0); Установлен на @hide и недоступен. В конце концов, я должен был установить дополнение родителя моего настраиваемого представления после вызова show()

Например:

 // Inflate custom dialog view LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); CustomDialogView dialogView = (CustomDialogView)inflater.inflate(R.layout.dialog_view, null); // Create and show custom alert dialog AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.dialog_title); builder.setView(dialogView); builder.setPositiveButton(R.string.dialog_ok, this); builder.setNegativeButton(R.string.dialog_cancel, this); builder.show(); // Remove padding from parent ViewGroup parent = (ViewGroup)dialogView.getParent(); parent.setPadding(0, 0, 0, 0); 

Вот код, который даст вам полный контроль над диалоговым окном:

 final Dialog dlg = new Dialog(this); View action_layout = ((LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.contacts_action, null); dlg.requestWindowFeature(Window.FEATURE_NO_TITLE); Window window = dlg.getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); WindowManager.LayoutParams wlp = window.getAttributes(); wlp.gravity = Gravity.FILL_HORIZONTAL; window.setAttributes(wlp); dlg.setCancelable(true); dlg.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dlg.setContentView(action_layout); dlg.show(); 
Intereting Posts
Распознавание изображений для Android / iPhone Textwatcher не работает с KitKat для числа как inputType Обнаружение при завершении воспроизведения видео YouTube Android gradle build с библиотекой, не может найти символ Как установить панель инструментов на FragmentActivity? Поддержка отслеживания экрана – Firebase 9.8 Android.os.TransactionTooLargeException выбрано случайно Могу ли я исключить региональные ресурсы (например, значения-fr) при создании конкретного продукта Android Product с градиентом Можно ли использовать GradientColor для определения градиента для заливки или штриха целиком в XML? Ошибка компиляции Android с помощью buildozer Каким образом используется раскрывающийся список «фрагмент предоставления контекста» графического редактора макета? Как получить строку из разных локалей в Android? Почему «Дата d = новая дата ();» возвращает ошибку? Хранение WebView для автономного просмотра Как изменить задержку потока сна / таймера в android во время выполнения?