scrollview嵌套listview,重写listview的onMeasure方法后listview中的图片只能显示一张

请叫我周周周 2016-02-20 10:22:05
在scrollview中嵌套了listview,然后再listview中进行了网络操作,从网上加载图片和文字;由于scrollview嵌套listview的时候会出现问题,所以就自定义了listview,重写了他的onMeasure方法;但是重写了之后listview中就只能显示一张图片;但是把scrollview和自定义的listview去掉就可以加载出来所有的图片,所以网络加载部分应该没错;应该是scrollview和listview的嵌套问题
我的onMeasure方法重写如下,也是从网上拷的代码;
@Override
/**
* 重写该方法,达到使ListView适应ScrollView的效果
*/
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
各位大神帮忙看看出现了什么问题,有什么可能会出现这种问题,谢谢
...全文
363 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
parv2 2016-02-20
  • 打赏
  • 举报
回复
我 直接用 listview 就已经可以上下 滚动 了 你用scrollview 要实现 别的高级功能?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
     >

        <ListView
            android:id="@+id/list_view2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@color/white"
            android:divider="@null"
            android:dividerHeight="0sp"
            android:footerDividersEnabled="false" />
    
</LinearLayout>
请叫我周周周 2016-02-20
  • 打赏
  • 举报
回复
引用 3 楼 wei220000的回复:
你这个叫预测ListView的高度,通常都是在给listview设置了adapter后调用如下。 /** * 手动设置LISTVIEW的高度 * @param listView */ public static void setListViewHeightBasedOnChildren(ListView listView) { // ��ȡListView��Ӧ��Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()�������������Ŀ View listItem = listAdapter.getView(i, null, listView); // ��������View �Ŀ�� listItem.measure(0, 0); // ͳ������������ܸ߶� totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // listView.getDividerHeight()��ȡ�����ָ���ռ�õĸ߶� // params.height���õ�����ListView������ʾ��Ҫ�ĸ߶� listView.setLayoutParams(params); listView.invalidate(); }
但是我看也可以通过自定义ListView的onMeasure方法来解决scrollview和ListView的嵌套问题
wei220000 2016-02-20
  • 打赏
  • 举报
回复
你这个叫预测ListView的高度,通常都是在给listview设置了adapter后调用如下。 /** * 手动设置LISTVIEW的高度 * @param listView */ public static void setListViewHeightBasedOnChildren(ListView listView) { // ��ȡListView��Ӧ��Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()�������������Ŀ View listItem = listAdapter.getView(i, null, listView); // ��������View �Ŀ�� listItem.measure(0, 0); // ͳ������������ܸ߶� totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1)); // listView.getDividerHeight()��ȡ�����ָ���ռ�õĸ߶� // params.height���õ�����ListView������ʾ��Ҫ�ĸ߶� listView.setLayoutParams(params); listView.invalidate(); }
请叫我周周周 2016-02-20
  • 打赏
  • 举报
回复
因为布局里面不止有listview,还有一些其他的东西,所以需要嵌套

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧