笔记82 | 在ScrollView中加载 需要全部展开ListView

Author:Even

需求:

wifi列表需要动态加载更新 所有的wifi列表需要全部展开显示 直接把listView放到一个scrollview中放的话,listView只会显示一个item

解决:

需要在每次加载前计算一下listview的高度

/*
      * 计算listview总item高度的方法: 
      */
     public void setListViewH(ListView listView) {
           ListAdapter listAdapter = listView.getAdapter();
           if (listAdapter == null) {
                return;
           }
           int totalHeight = 0;
           for (int i = 0; i < listAdapter.getCount(); i++) { 
                View listItem = listAdapter.getView(i, null, listView);
                listItem.measure(1, 1);
                totalHeight += listItem.getMeasuredHeight();   //写在对于的activity当中
           }
           ViewGroup.LayoutParams params = listView.getLayoutParams();
           params.height = totalHeight
                     + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
           listView.setLayoutParams(params);
           scrollView.fullScroll(ScrollView.FOCUS_UP);
     }

调用

listView.setAdapter(wifiListAdapter);
           listView.setFocusable(false);//防止每次加载都显示在listview底部
           setListViewH(listView);

此外还需要重写下listview中的onMeasure

public class myListView extends ListView{
     public myListView(Context context, AttributeSet attrs, int defStyle) {
           super(context, attrs, defStyle);
     }
     public myListView(Context context, AttributeSet attrs) {
           super(context, attrs);
     }
     public myListView(Context context) {
           super(context);
     }
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
           int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                     MeasureSpec.AT_MOST);
           super.onMeasure(widthMeasureSpec, expandSpec);
     }
}

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2018-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏分享达人秀

ToggleButton和Switch使用大全

上期学习了CheckBox和RadioButton,那么本期来学习Button的另外两个子控件ToggleButton和Switch,在开发中同样比较重...

3565
来自专栏封碎

Android画图之Bitmap(二) 博客分类: Android Android

    前面一篇博文Android画图之Bitmap(一) 介绍了简单的把 Bitmap 画到屏幕上,以及缩放 Bitmap 以铺满屏幕。对 Bitmap 的操...

1451
来自专栏向治洪

关于Android PullTorefreshScrollview回到顶部实例

列表滑动下面显示按钮,点击按钮回到顶部的功能,一般scrollview会有滑动监听的事件,通过setOnScrollChangeListener()滑动监听滑动...

2089
来自专栏李蔚蓬的专栏

3.1 Android控件架构

通常情况下,在Activity中使用setContentView()方法来设置一个布局,在调用该方法后,布局内容才真正显示出来。下面来看一下Android界面的...

911
来自专栏分享达人秀

两分钟掌握数值选择器NumberPicker

上一期学习了日期选择器DatePicker和时间选择器TimePicker,是不是感觉非常简单,本期继续来学习数值选择器NumberPicker 。 一...

2126
来自专栏懒人开发

鸿洋AutoLayout代码分析(一):原因和使用

代码适配,虽然第一次写比较麻烦, 但是之后就会很省事情 而其他的,虽然不麻烦,但是改动起来会很头痛,各种数据

1333
来自专栏程序员叨叨叨

私人订制Android本地图片选择器

史上最强的安卓图片选择器——GalleryFinal; 简书博客地址——http://www.jianshu.com/p/48ddd6756b7a

1563
来自专栏飞雪无情的博客

Android TextView小组件的使用--附带超链接和跑马灯效果

然后运行该应用就可以看到TextView的效果,是显示一行字:“Hello World, HelloTextView!”,这是因为新建的Hello项目自带的一个...

955
来自专栏跟着阿笨一起玩NET

c# 模拟window 操作鼠标|winapi

适合场景:LinkButton如果想要弹出右键菜单的时候,可以在Click事件中通过API模拟鼠标右击事件。

1951
来自专栏我就是马云飞

无需自定义View,彻底解放shape,selector吧

作为一个android程序员,对于shape、selector这两个标签一定不陌生。每当UI设计师给我们设计出一个个button背景的时候,我们就需要去draw...

1002

扫码关注云+社区

领取腾讯云代金券