简单解决ListView和ScrollView冲突,复杂情况仅供参考

ScrollView嵌套ListView冲突问题的最优解决方案 (转) 记录学习之用

项目做多了之后,会发现其实 ScrollView嵌套ListVew或者GridView等很常用,但是你也会发现各种奇怪问题产生。根据个人经验现在列出常见问题以及代码最少最简单的解决方法。

问题一 : 嵌套在 ScrollView的 ListVew数据显示不全,我遇到的是最多只显示两条已有的数据。

解决办法:重写 ListVew或者 GridView,网上还有很多若干解决办法,但是都不好用或者很复杂。

@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);

}

问题二 、打开套有 ListVew的 ScrollView的页面布局 默认 起始位置不是最顶部。

解决办法有两种都挺好用:

一是把套在里面的Gridview 或者 ListVew 不让获取焦点即可。

gridview.setFocusable(false); listview.setFocusable(false);

注意:在xml布局里面设置android:focusable=“false”不生效

方法二:网上还查到说可以设置myScrollView.smoothScrollTo(0,0);

自定义ListView添加项目代码:

/**
* 防止滚动冲突listView
* @author M.J
*
*/
public class MyListView extends ListView {

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

MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}

}

时间: 06-04

简单解决ListView和ScrollView冲突,复杂情况仅供参考的相关文章

使用LinearLayout实现ListView,解决ListView和ScrollView滚动冲突

在项目中,我们常常会遇到一个ScrollView里面会嵌套ListView的情况,但往往你会发现,ListView和ScrollView的滚动时间会有冲突问题,造成ListView不能完全显示.虽然网上有给出解决方案,但事实上并不好用,并不完美. public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.g

冲突--ListView与ScrollView冲突的4种解决方案

众所周知ListView与ScrollView都具有滚动能力,对于这样的View控件,当ScrollView与ListView相互嵌套会成为一种问题: 问题一:ScrollView与ListView嵌套导致ListView显示不全面 问题二:ScrollView不能正常滑动 解决方式一: ScrollView+LinearLayout+ListView可以换成ScrollView+LinearLayout+LinearLayout,对于开发中,ScrollView所能滚动的样式形式各异,另外的话

一个Listview的简单应用(内容仅供参考)

ListView中的xml.文件的内容 主应用的类 list的bean类 对应的adapter 相对应的item布局就不放了,希望多提意见!!!

C语言简单实现14个例题(谭浩强第四版)源于课上作业仅供参考!

#include<stdio.h> #include<math.h>#include<stdio.h> #include<math.h> #define PI 3.14159//对第二题的应用 void huashi()//1. 华氏度与摄氏度相互转换 { float f,c; printf("\n"); printf("请输入华氏:\n"); scanf("%f",&f); c=(5.0/

Python07新版作业源码:开发简单的FTP(仅供参考)

服务器端:server_server.py 1 #!usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # auther:Mr.chen 4 # 描述: 5 6 import socket 7 import os 8 import threading 9 import time 10 import json 11 from user_users import PersonInfo 12 13 DIR = os.path.dirname(os.path.ab

block的传值简单示例仅供参考,大牛勿喷

#import "ViewController.h" typedef void(^sumBlock)(int s);//声明为一个类型; /** *  用声明的block类型 sumBlock 定义block变量 s,s当做方法sum的一个参数, * *  这样在sum的方法实现里面给这个block变量s的参数传值,这个值就可以在调用 sum方法的地方通过这个block的参数值拿到在sum实现内传递的值 */ - (void)sum:(int)a :(int)b :(sumBlock)

如何解决ListView与CheckBox的冲突问题

ListView是我们每个Android应用app比不可少的一部分,通常它以列表形式用来展示大数据,在展示时有肯能配合Checkbox来使用,列如:购物车当ListView与CheckBox同时使用的时候可能就会产生一些冲突达不到你期望的效果,一般就会出现一下情况? 焦点冲突 点击事件冲突 选中的状态无法保存 ListView滚动时之前保存的状态发生改变 那么产生的原因:主要是ListView的适配器中的getView()方法重复调用,当我们滚动ListView,当之前保存的Item不可见时会移

解决Eclipse SVN文件冲突详解

在使用Eclipse SVN插件进行团队开发的过程,假设开发人员A和B都获取了同一个文件的最新版本(假如版本号为8),并都对其进行了改动,成员A已经提交了自己所作的改动(版本号变为9),如果此时成员B想要提交自己的改动,就极有可能与成员B已经提交的改动产生冲突. 如下图所示,在Eclipse SVN同步视图中的Test.java就是一个产生了版本冲突的文件,那么我们该如何解决SVN的文件冲突呢? 1.解决简单的文件版本冲突 对于产生版本冲突的文件,如果两个人改动的不是同一处位置,例如成员A只改动

Cocos2d-JS中使用CocosStudio资源——ListView和ScrollView

在本篇博客中,我们将简要分析一下ListView和ScrollView之间的关系,如何正确使用两个控件进行设计,目前CocosStudio对两个控件的支持状况等. 一.ListView和ScrollView的一些思考 1. 两者联系: 首先,我们要知道ListView是继承自ScrollView的,也就是说,ListView在ScrollView的基础上,对一些细节功能进行了细化.ScrollView有的方法,ListView都有,而ListView有的,ScrollView未必有. 官方的JS