Понимание макетов диалогового окна Android

Я делаю простой пользовательский диалог для моего приложения Android, отображая только строку поиска. Однако осложнения этой простой задачи сводят меня с ума.

Мой макет для диалога выглядит следующим образом:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp"> <SeekBar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialogVolumeSlider" android:layout_width="225dp" android:layout_height="wrap_content"/> </LinearLayout> 

Диалог создается в коде:

 Dialog d = new Dialog(this); d.setContentView(R.layout.custom_dialog); return d; 

Вместо простой коробки, обертывающей брелок, я получаю это призрачное пространство откуда-то:

Скриншот проблемы

В чем проблема? Я пробовал модифицировать

 d.getWindow().getAttributes().height 

Но это создает дополнительные проблемы.

Спасибо за любую помощь!

EDIT: Незнакомые вещи случаются, когда я назначил фиксированный «50dp» для моего макета LayearLayout: Вторая проблема

По умолчанию Dialog d.setTitle() оставляет пространство для заголовка, даже если вы его не задали (с помощью d.setTitle() ).

Вы можете либо задать заголовок для заполнения пробела, либо запросить, чтобы в Dialog не было заголовка.
Вот пример того, как запросить настройку без названия.

 Dialog d = new Dialog(this); d.requestWindowFeature(Window.FEATURE_NO_TITLE); d.setContentView(R.layout.custom_dialog); 

Без названия, ваш SeekBar появится, как вы ожидаете.

Попробуйте установить фиксированную высоту на родительском линейном макете. Что-то вроде:

 android:layout_height="50px"