2011-01-14 2 views
2

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

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

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

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

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

alt text

ответ

3

Задача решена.

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

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

1

В ответ на @Fresh_Meat

вы можете добавить кнопки в нижней части ListView, как это: 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 Посмотреть

5

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

Что вам нужно, это просто 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> 

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