Android - 如何为listview设置最大大小

时间:2015-02-03 14:55:48

标签: android android-listview

我想制作一个动态大小的列表视图。当我按下按钮时,它会在列表视图中添加一行。我希望按钮始终与列表视图的底部对齐。

问题是listview会在有足够的行时将按钮推出屏幕。那么在这种情况下,如何使按钮对齐到屏幕底部或设置列表视图的最大高度?但是当列表视图只有1行或2行时,我希望按钮位于列表视图的正下方。

7 个答案:

答案 0 :(得分:1)

如果您希望显示按钮,即使用户位于列表视图的顶部,也可以看到其他答案,但如果您希望在用户滚动到列表底部时显示按钮,请使用此方法页脚。

View footer = getLayoutInflater().inflate(R.layout.footer, null);
ListView listView = getListView();
listView.addFooterView(footer);

页脚布局包含按钮。

答案 1 :(得分:1)

您可以在线性布局中使用ListView和具有不同权重的按钮。像这样的东西

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/reportCommentsLayout"

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/reportCommentsListView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.9"
            android:paddingTop="5dp" >

    </ListView>



        <Button
            android:id="@+id/reportCommnets_Addbutton"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.1"
            android:text="Button" />



    </LinearLayout>

答案 2 :(得分:0)

您可以使用规则alignParentBottom = true使用Button创建RelativeLayout,使用上面的规则创建ListView。像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/button" >
</ListView>

<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_alignParentBottom="true"/>

答案 3 :(得分:0)

根据您的问题,您必须动态更改按钮的位置。根据我的评论,这就是答案。

  1. 将侦听器附加到ListView:请参阅https://stackoverflow.com/a/4433294/1377145
  2. 在监听器回调中,检查按钮的可见性:
  3. Rect videoBounds = new Rect(); yourButton.getGlobalVisibleRect(videoBounds);

    如果按钮可见&gt;

    getGlobalVisibleRect将返回true 0%,也是假。

    1. 要修复底部的按钮:更改按钮的LayoutParams并将alignParentButtom设置为true。否则将alignParentButtom设置为false。
    2. bis: 取决于您的布局,您必须&#34;移动&#34;使用removeView / addView在视图树中的按钮。不要忘记删除视图,以便视图在将其添加到另一个视图之前不会有父视图。

      附加说明:要在按钮上显示%,您可以使用videoBounds.height()和三条规则:

      100 * videoBounds.height() / yourButton.getHeight
      

      编辑:更改答案以匹配已接受的答案。

答案 4 :(得分:0)

这样的事情应该会有所帮助:

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:id="@+id/add"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="Add"/>

        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/add"
            />

    </RelativeLayout>

答案 5 :(得分:0)

很抱歉,要注入我自己的个人意见,但我认为“添加更多”或:加载更多按钮“始终是ListView中的最后一个视图。

要回答您的问题,为了达到您的需求,Listview和“添加行”按钮应该是ViewGroup中的兄弟。

  <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">



    <ListView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:minHeight="48dp"
        android:layout_alignParentBottom="true"/>
  </RelativeLayout>

这里的关键点是Button有一个固定的高度,而ListView占用了剩下的空间。该按钮还与父视图的底部对齐。

答案 6 :(得分:0)

使用相对布局。 将按钮放在屏幕底部,并将listView位置设置在他上方:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
    android:layout_width="match_parent"
    android:id="@+id/list"
    android:layout_above="@+id/button1"
    android:layout_height="wrap_content">

</ListView>

<Button
    android:layout_width="match_parent"
    android:id="@+id/button1"
    android:layout_alignParentBottom="true"
    android:layout_height="wrap_content" />

</RelativeLayout>