Android开发实现ScrollView中嵌套两个ListView的方法

本文实例讲述了Android开发实现ScrollView中嵌套两个ListView的方法。分享给大家供大家参考,具体如下:

做的项目中要使用两个ListView在同一个页面上下显示,因为数据源不同,不能通过在Adapter中设置标志位去区分显示,最后只能硬着头皮做一个ScrollView嵌套两个ListView,但按正常情况是不能同时显示的,会出现上面的ListView完全显示,下面的只显示一个Item,查了一些资料终于成功了

主要有一个ListViewUtility ,代码如下:

import java.io.File;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
public class ListViewUtility {  // 是一个Scrollview 中 添加两个Listview的显示布局
  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++) {
//     Global.pos = 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,如下

signListview.setAdapter(mYinggaoSignListAdapter);
appListView.setAdapter(adapter);
ListViewUtility.setListViewHeightBasedOnChildren(signListview);
ListViewUtility.setListViewHeightBasedOnChildren(appListView);

最后把两个ListView添加到 ListViewUtility中,并且两个ListView要填充完再添加,两个ListView中的adpter的布局最外层要使用LinearLayout,只有LinearLayout 在ListViewUtility 中才能成功测量每个Item 的高度,不然就会出错

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android开发入门与进阶教程》、《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2017-11-27

Android之ScrollView嵌套ListView和GridView冲突的解决方法

那么里面的ScrollView高度计算就会出现问题.我们也就无法得到想要的效果.核心解决方案: 重写ListView或者GridView的OnMesure 方法. 复制代码 代码如下: public class MyListView extends ListView {        public MyListView(Context context) {                super(context);        }        public MyListView(Conte

Android 中ScrollView与ListView冲突问题的解决办法

Android 中ScrollView与ListView冲突问题的解决办法 自定义MyListView public class MyListView extends ListView { public MyListView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyListView(Context context, AttributeSet attrs) { sup

Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法

Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法 前言: 关于ScrollView嵌套ExpandableListView导致ExpandableListView显示不正常的问题解决方法有很多,在这里介绍一种小编亲自测试通过的方法. 重写ExpandableListView: 实例代码: package com.jph.view; import android.content.Context; import android.util.Attr

Android ListView的item中嵌套ScrollView的解决办法

前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了. /** * * @author 作者:易皇星 * * @da2016年10月24日 时间: * * @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的I

Android编程之截屏实现方法(包括scrollview与listview)

本文实例讲述了Android编程之截屏实现方法.分享给大家供大家参考,具体如下: public class ScreenShot { // 获取指定Activity的截屏,保存到png文件 public static Bitmap takeScreenShot(Activity activity) { // View是你需要截图的View View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(tr

Android笔记之:在ScrollView中嵌套ListView的方法

前几天因为项目的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView.但刚开始的时候,会发现放入的小ListView会显示不完全,它的高度始终有问题.上网查了下,发现别人也有遇到这样的问题,而大多数人都不推荐这样的设计,因为默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是无法计算的. 又搜索了一下,发现有StackOverflow上的牛人已经解决了这个问题,经过

Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法

Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法 ScrollView 下嵌套 ListView 或 GridView 会发列表现数据只能显示一行.因为他们都是滚动结构,两个滚动条放到一起就会引起冲突. 解决此问题可以通过计算 ListView 高度或重写 ListView 的 onMeasure 方法来解决.下面介绍通过重写 onMeasure 方法来解决问题. 重写 onMeasure 方法如下: public class ScrollLi

Android 中ScrollView嵌套GridView,ListView的实例

Android 中ScrollView嵌套GridView,ListView的实例 在Android开发中,经常有一些UI需要进行固定style的动态布局,然而由于现在的UI都喜欢把一个界面拉的很长,所以我们很多情况下需要使用ScrollView来嵌套列表控件来实现UI.这样就导致了很多不顺心的问题. 问题一:列表控件显示不完全 原因是嵌套情况下,ScrollView不能正确的计算列表控件的高度. 有两种解决方案 方案一 在适配器赋值完成后代码动态计算列表的高度.这里贴出ListView的计算代

Android ListView与ScrollView冲突的解决方法总结

Android ListView与ScrollView冲突的解决方法总结 众所周知ListView与ScrollView都具有滚动能力,对于这样的View控件,当ScrollView与ListView相互嵌套会成为一种问题:  问题一:ScrollView与ListView嵌套导致ListView显示不全面  问题二:ScrollView不能正常滑动 解决方式一: ScrollView+LinearLayout+ListView可以换成ScrollView+LinearLayout+Linear

Android中listview嵌套scrollveiw冲突的解决方法

一.使用网上用的动态改变listview高度的方法 该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常.所以使用限制较大. public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { //获取ListView对应

Android listview的滑动冲突解决方法

Android listview的滑动冲突解决方法 在Android开发的过程中,有时候会遇到子控件和父控件都要滑动的情况,尤其是当子控件为listview的时候.就比如在一个ScrollView里有一个listview,这种情况较常见,就会出现这种滑动冲突的情况.这种情况也比较常见,有时候就是这样,没法,但是,了解事件分发的我们知道应该怎么处理这样的事情 有两点需要注意: 一般来说,view的onTouchEvent返回true,即消耗点击事件,viewgroup的onInterceptTou

android中view手势滑动冲突的解决方法

Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是:dispatchTouchEvent.onInterceptTouchEvent和onTouchEvent. public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来进行事件的分发.如果事件传递到view,那么这个方法一定会被调用,返回结果受当前View的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是

外层竖向ScrollView,里层横向ScrollView滑动冲突的解决方法

实例如下: public class CustomScrollView extends ScrollView { private GestureDetector mGestureDetector; View.OnTouchListener mGestureListener; @SuppressWarnings("deprecation") public CustomScrollView(Context context,AttributeSet attrs) { super(contex

Android开发控制ScrollView滑动速度的方法

本文实例讲述了Android开发控制ScrollView滑动速度的方法.分享给大家供大家参考,具体如下: 前言 由于各个Android平板触摸屏的材质不一样,滑动效果会有一些区别,有的比较灵敏,有的比较迟钝,这里就遇到了要求控制滑动速度的需求... 正文 翻阅查找ScrollView的文档并搜索了一下没有发现直接设置的属性和方法,这里通过继承来达到这一目的. /** * 快/慢滑动ScrollView * @author 农民伯伯 * */ public class SlowScrollView

Android Studio 报错“app:processDebugResources"解决方法

Android Studio 报错"app:processDebugResources"解决方法 Android Studio项目Build的时候报了这么一个错误: Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Pro

Android 关于ExpandableListView刷新问题的解决方法

正文 首先是最基础的 ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list); EListAdapter adapter = new EListAdapter(getApplicationContext(), list); //list 是数据源 vList.setAdapter(adapter); //适配器就不写了, 都懂的 class EListAdapter extends BaseExpa

微信小程序自定义弹窗滚动与页面滚动冲突的解决方法

本文为大家分享了微信小程序自定义弹窗滚动与页面滚动冲突的解决方法,供大家参考,具体内容如下 先看效果是否是自己需要的 实现步骤: 1.整个布局用作为根节点包裹所有view,并动态绑定scroll-view的scroll-y属性 2.样式文件中设置Page的overflow-y属性值为hidden 3.样式文件中设置scroll-view的height属性值为100% 4.打开自定义弹窗的点击事件中,更改isScroll的值为false,关闭弹窗的点击事件中,更改isScroll的值为true J