Android动态改变ListView的高度

定义一个函数将dp转换为像素

public int Dp2Px(Context context, float dp) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) (dp * scale + 0.5f);

}

定义函数动态控制listView的高度

public void setListViewHeightBasedOnChildren(ListView listView) {

//获取listview的适配器

ListAdapter listAdapter = listView.getAdapter(); //item的高度

if (listAdapter == null) {

return;

}

int totalHeight = 0;

for (int i = 0; i < listAdapter.getCount(); i++) {

View listItem = mAdapter.getView(i, null, listView);

listItem.measure(0, 0); //计算子项View 的宽高 //统计所有子项的总高度

totalHeight += Dp2Px(getApplicationContext(),listItem.getMeasuredHeight())+listView.getDividerHeight();

}

ViewGroup.LayoutParams params = listView.getLayoutParams();

params.height = totalHeight; listView.setLayoutParams(params);

}

在每次listView的adapter发生变化后,要调用setListViewHeightBasedOnChildren(listView)更新界面

时间: 2024-08-28 17:49:47

Android动态改变ListView的高度的相关文章

Android 动态改变高度以及计算长度的EditText

前段时间项目需求,需要做一个有限制长度的输入框并动态显示剩余文字,同时也要动态改变EditText的高度来增加用户体验.现整理出来与大家分享. 先来看看效果图 看了效果就分享一下布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wid

Android动态改变布局,比如登陆弹出软键盘,登陆框上移(转载)

Android动态改变布局 http://www.cnblogs.com/angeldevil/p/3836256.html 遇到这么个需求,先看图:      其实是一个软件的登录界面,初始是第一个图的样子,当软键盘弹出后变为第二个图的样子,因为登录界面有用户名.密码.登录按钮,不这样的话软键盘弹出后会遮住登录按钮(其实之前的实现放到了ScrollView里面,监听软键盘弹出后滚动到底部,软键盘隐藏后滚动到顶部,也是可以的). 最简单的方法就是多加几个冗余的View,根据软键盘的状态隐藏不需要

android &nbsp; 动态改变图片大小

在oncreate中,使用getheight等函数不能获得控件大小,得到的为0 应使用其他方法 Resources res = getResources(); final ImageView view=(ImageView)findViewById(R.id.IV_about); final Drawable drawable=res.getDrawable(R.drawable.ic_about); DisplayMetrics dm = new DisplayMetrics(); getWi

js动态改变iframe的高度

js动态改变iframe的高度的写法 〈iframe id="docDetail" width="100%"  height="200" frameborder="0" src="a.htm"〉 〈/iframe〉 而a.html不是固定大小的,这个时候嵌套的iframe就会出现滚动条. 通过js获取iframe的高度,然后动态的改变,这样就不会出现滚动条. 方式一:在jsp的body里增加onload方法

【iOS知识学习】_iOS动态改变TableView Cell高度

在做tableView的时候,我们有时候需要根据cell的高度动态来调整,最近在网上看到一段代码不错,跟大家Share一下. 在 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 类中获取cell的高度: CGSize boundSize = CGSizeMake(216, CGFLOAT_MAX); cell.textLabel.text

Android 动态设置控件高度

TextView textView= (TextView)findViewById(R.id.textview); LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) textView.getLayoutParams(); //取控件textView当前的布局参数 linearParams.height = 20;// 控件的高强制设成20 linearParams.width = 30;// 控件的宽强制设成3

android 动态改变屏幕方向

LANDSCAPE与PORTRAIT 范例说明 要如何通过程序控制Activity的显示方向?在Android中,若要通过程序改变屏幕显示的方向,必须要覆盖 setRequestedOrientation()方法,而若要取得目前的屏幕方向,则需要访问getRequestedOrientation()方 法. 本 范例为求简要示范更改做法,设计了一个按钮,当单击按钮的同时,判断当下的屏幕方向,例如竖排(PORTRAIT),则将其更改为横排 (LANDSCAPE);若为横排(LANDSCAPE),则

动态改变cell的高度&amp;beginUpdates和endUpdates-实现UITableView的动画块

1.利用reloadRowsAtIndexPaths:withRowAnimation:来动态改变cell的高度 UITableView的- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 这一方法会重新加载所指定indexPaths中的UITableViewCell实例,因为重新加载cell所以会请求这个UITableView实例的dat

Android - 动态调整ListView高度

布局中,如果设计ListView的高度为包裹内容,那么ListView的高度是随着它的子条目的数量的变化而改变的, 这就可能会导致ListView下面的一些控件的位置也会随着ListView的高度的变化而变化. 项目中可能会碰到需要动态调整或控制ListView的高度的情况,下面就分享一下我自己使用的一种办法. 我遇到的问题: ListView下面有一个Button,如果ListView子条目的数量较少,Button可以正常显示在屏幕上,但如果ListView子条目的数量较多时,Button就会