Пользовательский диалог со списком и кнопкой всегда полноэкранный - PullRequest
2 голосов
/ 14 января 2011

Я хочу создать пользовательский диалог, который содержит вид списка и кнопки под видом списка.Кнопки должны быть ниже списка, но всегда видимы (layout_alignParentBottom = "true").

Я создал xml, который работает довольно хорошо, но только для длинных списков.Если список короткий, кнопки все еще находятся внизу экрана, а высота заголовка диалога растягивается, чтобы сделать экран заполнения диалогового окна.Прикрепленное изображение показывает, что я получаю сегодня.

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

Я не могу опубликовать xml по какой-то причине.но я использую относительное расположение, кнопки выровнены по нижнему краю, небольшая панель расположена над кнопками, список расположен над этой панелью.Все макеты являются макетом: height = wrap_content.

Благодарен за любую помощь./ Магнус

alt text

Ответы [ 3 ]

6 голосов
/ 06 августа 2013

Этот ответ в целом правильный, но вносит значительные накладные расходы из-за множества вложенных макетов.

Вам нужен простой LinearLayout с определенной конфигурацией:

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
     />
<!-- Notice layout_weight=1 and height=0dp - it's the most important thing here-->


<WhateverLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
<!-- And the layout below the listview has some arbitrary height (but no weight!)-->

</WhateverLayout>

</LinearLayout>

Результат тот же: «диалоговое окно, которое не больше, чем содержимое, и максимум размером с экран, всегда видимые кнопки».

3 голосов
/ 14 января 2011

Проблема решена.

Я взял alert_dialog.xml из исходного кода Android и немного изменил его.Я добавил свой просмотр списка в структуру фреймов customPanel, удалил topPanel и contentPanel.

Результат : диалоговое окно, которое не больше содержимого и не больше экрана, всегда видны кнопки.

1 голос
/ 22 февраля 2011

В ответ на @ Fresh_Meat

вы можете добавить кнопки внизу списка, например: http://www.anddev.org/code-snippets-for-android-f33/listview-with-a-footer-item-t49281.html

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:padding="10dip"
   >
    <LinearLayout
        android:id="@+id/bottom_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">
            <!--Put whatever view item you want here -->
            <EditText
             android:id="@+id/conversation_reply"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="write a reply..."
             />
   </LinearLayout>
   <ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:cacheColorHint="#00000000"
    android:layout_above="@id/bottom_view"
    />
</RelativeLayout>

List with footer

Использованиеэто в вашем Alert View

...