由于应用程序的设计,我需要执行以下操作: (我尽可能地减少了问题 - 并在其他答案中搜索,但还没找到我的问题) 如图所示,我有以下组件:
Listview位于顶部,底部的按钮区域和它们之间的分隔线。 Listview的大小可变。 以下是困难的部分: 分隔线始终可见。 分隔线始终位于按钮区域上方。如果列表视图不使用整个可用空间,则分隔符必须完全位于列表视图下方。如果Listview使用的空间多于可用空间,则分隔符必须正好位于按钮区域之上。当然,listview应该是可滚动的。
我在相对布局上尝试了很长时间,并且在线性布局中也尝试了重量。如果您有解决方案,请与我分享您的想法。
以下是布局的一部分,但实际上并没有按预期工作:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/notification_action_listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/navigation_item_background_selector"
android:divider="@null"
android:dividerHeight="0dp"
android:orientation="vertical" />
</LinearLayout>
<LinearLayout
android:id="@+id/divider_layout"
android:layout_width="fill_parent"
android:layout_height="1dp" >
<include
android:id="@+id/divider"
android:layout_width="fill_parent"
android:layout_height="1dp"
layout="@layout/divider_horizontal_green" />
</LinearLayout>
<LinearLayout
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|bottom"
android:orientation="vertical" >
<Button
android:id="@+id/notification_action_remove_button"
style="@style/flat_button_red_rounded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_big"
android:paddingLeft="@dimen/margin_big"
android:paddingRight="@dimen/margin_big"
android:text="@string/delete_account" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
使用相对布局作为顶级。将页脚设置为alignBottom,将包含Listview的LinearLayout和layout_above =&#34; @ id / footer&#34;设置为分隔符。我已经编辑了你的xml来解决你的问题(我认为它已经正确形成但是SO并不是最好的编辑器)。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:alignParentTop="true"
android:layout_above="@id/footer">
<ListView
android:id="@+id/notification_action_listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/navigation_item_background_selector"
android:divider="@null"
android:dividerHeight="0dp"
android:orientation="vertical" />
<include
android:id="@+id/divider"
android:layout_width="fill_parent"
android:layout_height="1dp"
layout="@layout/divider_horizontal_green" />
</LinearLayout>
<LinearLayout
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="true"
android:orientation="vertical" >
<Button
android:id="@+id/notification_action_remove_button"
style="@style/flat_button_red_rounded"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_big"
android:paddingLeft="@dimen/margin_big"
android:paddingRight="@dimen/margin_big"
android:text="@string/delete_account" />
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:0)
我会声明两个分隔符,并给每个分区符号。
然后,以编程方式,我将检查列表视图的大小与其容器的大小。
如果列表视图比容器大,我会将分隔符停在“可见”按钮上方,列表视图下方的那个“已消失”
等...
说实话,我可能只是将它对齐在按钮上方并称之为一天。