我想创建一个自定义对话框,其中包含列表视图下方的列表视图和按钮。按钮应位于列表视图下方,但始终可见(layout_alignParentBottom =“true”)。
我创建了一个运行良好的xml,但仅限于长列表。如果列表很短,则按钮仍位于屏幕底部,并且对话框标题的高度将拉伸以生成对话框填充屏幕。附图显示了我今天得到的结果。
简而言之。我想要一个普通的对话框,如果nececcary只填充屏幕。
由于某种原因,我无法发布xml。但是我使用了relativelayout,按钮对齐父母底部,小面板布置在按钮上方,listview布置在此面板上方。 所有布局都是布局:height = wrap_content。
感谢任何帮助。 /马格努斯
答案 0 :(得分:6)
This answer通常是正确的,但由于许多嵌套布局,会带来很大的开销。
您需要的是一个具有特定配置的简单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>
结果是相同的:“一个不大于内容的对话框,最大的屏幕大小,总是按钮可见。”
答案 1 :(得分:3)
问题解决了。
我从android源代码中获取了 alert_dialog.xml 并对其进行了一些修改。我将listview添加到customPanel framelayout,删除了topPanel和contentPanel。
结果:一个不大于内容且最大值与屏幕一样大的对话框,始终显示按钮。
答案 2 :(得分:1)
回答@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>
在警报视图中使用此功能