Android Layout XML:Listview下面的分隔符

时间:2015-01-08 21:42:48

标签: android android-layout listview layout

由于应用程序的设计,我需要执行以下操作: (我尽可能地减少了问题 - 并在其他答案中搜索,但还没找到我的问题) layout draft 如图所示,我有以下组件:

  • 列表视图
  • GreenDivider,固定大小为1dp
  • 扣区

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>

2 个答案:

答案 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)

我会声明两个分隔符,并给每个分区符号。

然后,以编程方式,我将检查列表视图的大小与其容器的大小。

如果列表视图比容器大,我会将分隔符停在“可见”按钮上方,列表视图下方的那个“已消失”

等...

说实话,我可能只是将它对齐在按钮上方并称之为一天。