ListView 动态设置高度问题

今天开发遇到一个问题,就是当动态插入ListView数据的时候,由于之前ListView的高度已经固定死了,所以显示不完整的数据,并且底部显示黑边。如图:

而我希望这个ListView可以动态的改变高度:

当时第一个想到的解决办法就是在setAdapter之后去重新修改ListView的高度,但是发现设置match_parent或wrap_content没有效果,只能设置一个固定的高度。但是显然我的数据长度是不定的,所以设置固定高度不显示。

最后采用的办法是:

[java] view plaincopy

  1. public void setListViewHeightBasedOnChildren(ListView listView) {
  2. ListAdapter listAdapter = listView.getAdapter();
  3. if (listAdapter == null) {
  4. return;
  5. }
  6. int totalHeight = 0;
  7. for (int i = 0; i < listAdapter.getCount(); i++) {
  8. View listItem = listAdapter.getView(i, null, listView);
  9. listItem.measure(0, 0);
  10. totalHeight += listItem.getMeasuredHeight();
  11. }
  12. ViewGroup.LayoutParams params = listView.getLayoutParams();
  13. params.height = totalHeight
  14. + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
  15. ((MarginLayoutParams) params).setMargins(10, 10, 10, 10); // 可删除
  16. listView.setLayoutParams(params);
  17. }

[html] view plaincopy

  1. <ListView
  2. android:id="@+id/getInfo"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:cacheColorHint="#FFF4F4F4"
  6. android:dividerHeight="0.0dip"
  7. android:fadingEdge="none" // 边界黑边
  8. />
时间: 2024-11-10 11:38:20

ListView 动态设置高度问题的相关文章

android RelativeLayout 动态设置高度

定义: 1 private RelativeLayout mrlay; 调高度: 1 mrlay = (RelativeLayout) findViewById(R.id.rlay_1); 2 android.view.ViewGroup.LayoutParams pp =mrlay.getLayoutParams();3 mrlayt.getLayoutParams();4 pp.height =180; 5 mrlay.setLayoutParams(pp);

动态设置图片的宽度和高度

动态设置图片控件的宽度和高度: imageView.getLayoutParams().width=600;imageView.getLayoutParams().height=400; 设置图片(src): imageView.setImageResource(resId); android获得屏幕高度和宽度: 1.WindowManager wm = (WindowManager) getContext()                     .getSystemService(Cont

Android 动态设置控件高度

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

动态设置iframe高度

<%//动态设置iframe高度 %><script language="javascript" type="text/javascript">      function SetWinHeight(obj) {                              var win = obj;        if (document.getElementByIdx_x) {            if (win && !

安卓ListView 如何设置item的高度

安卓中的listview,设置其显示item布局的高度来设置item在listview中显示的高度是不可取的.如何设置item的高度? 分为两种情况: 1.有图片的情况: 有图片的情况比较简单,布局的大小将会由图片的大小来撑起,这是只需要调节图片的width和height即可. 2.无图片情况 无图片的情况我们可以用两种方式来确定大小 a.在布局中使用Android:minHeight="5dp",填上需要的最小高度,这个方便直接. b.如果是在自己写的Adapter中,那就可以在ge

动态设置RecyclerView的高度

View view = LayoutInflater.from(mContext).inflate(R.layout.help_recycler, parent, false); //动态设置View高度,解决'查看更多'上下偏移问题 final float scale = mContext.getResources().getDisplayMetrics().density; int imageHeiht = (int) (102 * scale + 0.5f);//dp转px if(view

如何设置listview每个item高度

据我所了解,listview每行的宽度是由 inflater填充布局中高度最大的那个控件的高度... public  void setListViewHeightBasedOnChildren(ListView listView)         {                //获取ListView对应的Adapter                ListAdapter listAdapter = listView.getAdapter();                if (lis

UITableView自定义Cell中,纯代码编程动态获取高度

在UITableView获取高度的代理方法中,经常需要根据实际的模型重新计算每个Cell的高度.直接的做法是在该代理方法中,直接根据模型来返回行高:另 [1]-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 一种比较优雅的方式是将高度的获取方法放在一个单独的frame中[2],frame中包含了该Cell显示需要的数据模型. 但是在IOS8之后,苹果提供了一个

[转] iOS TableViewCell 动态调整高度

原文: http://blog.csdn.net/crayondeng/article/details/8899577 最近遇到了一个cell高度变化的问题,在找解决办法的时候,参考了这篇文章,觉得不错 在写sina 微博的显示微博内容时,用到cell进行显示,那么就要考虑到不同微博内容导致的cell高度问题.在微博显示的内容中包括了文字和图片,那么就要计算文字部分的高度和图片部分的高度.这篇博文就记录一下如何处理cell高度的动态调整问题吧! 一.传统的方法 在 tableview的deleg