我想制作一个动态大小的列表视图。当我按下按钮时,它会在列表视图中添加一行。我希望按钮始终与列表视图的底部对齐。
问题是listview会在有足够的行时将按钮推出屏幕。那么在这种情况下,如何使按钮对齐到屏幕底部或设置列表视图的最大高度?但是当列表视图只有1行或2行时,我希望按钮位于列表视图的正下方。
答案 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)
根据您的问题,您必须动态更改按钮的位置。根据我的评论,这就是答案。
Rect videoBounds = new Rect();
yourButton.getGlobalVisibleRect(videoBounds);
getGlobalVisibleRect
将返回true 0%,也是假。
alignParentButtom
设置为true。否则将alignParentButtom
设置为false。 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>