Android 满足条件时从屏幕底部显示ListView(所有项目可见)
当收到URL响应时,我想显示一个带有一些项目的Android 满足条件时从屏幕底部显示ListView(所有项目可见),android,android-layout,listview,android-listview,Android,Android Layout,Listview,Android Listview,当收到URL响应时,我想显示一个带有一些项目的列表视图 要从底部显示ListView,我所做的是,将其放置在LinearLayout(其父级)的末尾,并将可见性设置为已消失 布局文件: </LinearLayout> . . . <!-- ListView at bottom --> <ListView android:id="@+id/places_list" android:layout_w
列表视图
要从底部显示ListView
,我所做的是,将其放置在LinearLayout(其父级)的末尾,并将可见性设置为已消失
布局文件:
</LinearLayout>
.
.
.
<!-- ListView at bottom -->
<ListView
android:id="@+id/places_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray"
android:visibility="gone" >
</ListView>
</LinearLayout>
但问题是,在这种布局中,ListView
height仅为37。我理解这是因为ListView
的末尾只有那么多的高度可用
但是,如何在列表内容更改时和显示前动态计算列表视图的高度,从而解决了我的问题。ListView
正在从复制代码
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
如果(listAdapter==null){
//前提条件
回来
}
int totalHeight=0;
对于(int i=0;i
我解决了我的问题,当列表内容更改时,在显示列表视图之前,动态计算列表视图的高度
正在从复制代码
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
如果(listAdapter==null){
//前提条件
回来
}
int totalHeight=0;
对于(int i=0;i
使用包裹内容设置您的高度。@Segi尝试过。未解决。结果是什么。?与使用match\u parent
相同。高度仍然仅为37。然后更改线性布局高度。。因为它使用了父级尺寸。请使用包裹内容设置您的高度。@Segi尝试过。未解决。结果是什么。?与使用match\u parent
相同。高度仍然仅为37。然后更改线性布局高度。。因为它使用父级大小。
// Show listView that displays a list of items
private void showListView() {
ObjectAnimator animator = null;
placeListView.setVisibility(View.VISIBLE);
// Display listView with animation
if (activeEditTextId == R.id.from_location) {
animator = ObjectAnimator.ofFloat(placeListView, "y", fromLocation.getY() + fromLocation.getHeight() + 5);
} else if (activeEditTextId == R.id.to_location) {
animator = ObjectAnimator.ofFloat(placeListView, "y", toLocation.getY() + toLocation.getHeight() + 5);
}
animator.setDuration(2000);
animator.start();
listAdapter.notifyDataSetChanged();
}
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}