我想在 ListView
下显示一个按钮。问题是,如果 ListView
得到扩展(添加的项目...),按钮就会被推出屏幕。
我尝试了一个带有权重的 LinearLayout
(如 Android: why is there no maxHeight for a View? 中所建议的那样),但要么我的权重有误,要么它根本不起作用。
另外,我在某处发现了使用 RelativeLayout
的提示。 ListView
然后将使用 android:layout_above
参数设置在按钮上方。
问题是我不知道之后如何定位按钮。在我找到的示例中,使用 android:layout_alignParentBottom
调整了 ListView
下方的 View ,但我不希望我的按钮紧贴屏幕底部。
除了使用 setHeight 方法和一些计算所需空间之外还有什么想法吗?
编辑: 我得到了很多有用的答案。
bigstone 和 user639183 的解决方案几乎完美运行。但是,我必须在按钮底部添加一个额外的填充/边距,因为它仍然会被推到屏幕的一半(但随后停止)
如果您希望将按钮固定在屏幕底部,Adinia 仅使用相对布局的答案就可以了。这不是我想要的,但可能对其他人有用。
AngeloS 的解决方案是我最后选择的,因为它只是创建了我想要的效果。但是,我对按钮周围的
LinearLayout
做了两个小改动:首先,因为我不想在布局中包含任何绝对值,所以我将
android:layout_height="45px"
更改为wrap_content
,工作得很好。其次,由于我希望按钮水平居中,只有垂直
LinearLayout
支持,所以我将 android:orientation="horizontal"更改为 "vertical"。
AngeloS 在他最初的帖子中也表示,他不确定
ListView
周围的LinearLayout
中的android:layout_weight="0.1"
参数是否code> 有任何影响;我刚试过,它确实做到了!否则,按钮会再次被推出屏幕。
最佳答案
我在代码中解决了这个问题,只有当 ListView 中包含超过 5 个项目时才设置它的高度:
if(adapter.getCount() > 5){
View item = adapter.getView(0, null, listView);
item.measure(0, 0);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, (int) (5.5 * item.getMeasuredHeight()));
listView.setLayoutParams(params);
}
请注意,我将最大高度设置为单个项目高度的 5.5 倍,因此用户肯定会知道需要进行一些滚动操作! :)
关于android - Android上ListView的限制高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487552/