Понимание макетов диалогов Android - PullRequest
3 голосов
/ 25 марта 2011

Я делаю простой настраиваемый диалог для моего приложения для 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;

Вместо простого окна, окружающего панель поиска, я получаю фантомное пространство откуда-то:

Problem screenshot

В чем здесь проблема?Я попытался изменить

d.getWindow().getAttributes().height

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

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

РЕДАКТИРОВАТЬ: странные вещи случаются, когда я назначил фиксированное "50dp" для layout_height моего LinearLayout: Second problem

Ответы [ 2 ]

9 голосов
/ 25 марта 2011

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

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

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

Без заголовка ваш SeekBar будет отображаться так, как вы ожидаете.

0 голосов
/ 25 марта 2011

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

android:layout_height="50px"
...