ScrollView嵌套ListView显示和滑动问题

ScrollView嵌套ListView滑动冲突的解决方法 ScrollView嵌套ListView滑动冲突的解决方案 立即下载

ScrollView嵌套ListView显示和滑动问题

显示问题 

ScrollView中嵌套ListView我测试时,若是高度显示用布局调整android:layout_height=""不管用了,那么这里提供给大家提供两种方法:

方法一:通过在Activity中计算ListView的item高度,并重新布局

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.requestLayout();重新布局

方法二:自定义ListView,重写onMeasure()方法

 @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        //首次改变显示尺寸是在布局中直接设置的,第二次改变尺寸地方是这里,而第三次改变尺寸可在Activity中
        int spec = MeasureSpec.makeMeasureSpec(422, MeasureSpec.AT_MOST);
        setMeasuredDimension(widthMeasureSpec,spec); //或采用下边这种方式
//        int spec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
//        setMeasuredDimension(widthMeasureSpec,heightMeasureSpec);
    }

其实这种情况不一定会出现的,下边的滑动问题才是重点哦!


不能滑动问题

需要注意的是:

1.滑动的前提是listView的高度显示不下所有的数据内容。

2.一次触摸事件(包括按下、滑动、抬起)只有落到listView的覆盖范围,listView才会监听到。

3.上次的触摸事件的处理方式(如请求父控件不拦截),不会影响下一次触摸事件的处理。


三种处理滑动问题的方法:

方法一,设置setOnTouchListener:

listView.setOnTouchListener(new View.OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {

        if(event.getAction() == MotionEvent.ACTION_UP){
            listView.requestDisallowInterceptTouchEvent(false); //请求控件不拦截本次触摸事件
        }else{
	    listView.requestDisallowInterceptTouchEvent(true);
} return false; }});

方法二,自定义ListView,重写onInterceptTouchEvent或dispatchTouchEvent方法:

  @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        int action = ev.getAction();
        switch(action) {
            case MotionEvent.ACTION_DOWN :
                requestDisallowInterceptTouchEvent(true);
            break;
            case MotionEvent.ACTION_UP:
                requestDisallowInterceptTouchEvent(false);
            break;
        }

        return true;

    }

方法三:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    
    requestDisallowInterceptTouchEvent(true);
    return super.onInterceptTouchEvent(ev);  //或采用 return true;
}

总结:

  还是留给优秀的你来完成吧!O(∩_∩)O哈哈~

ScrollView嵌套ListView滑动问题 我们都知道在ScrollView嵌套ListView的时候会出现问题,那就是ListView中又多条数据的时候也是只显示一条,解决办法是 自定义ListView,然后重写里面的onMesure()方法。 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = 阅读详情

相关推荐

ListView实现树形菜单——listview整体水平与垂直同时滚动(ScrollerView嵌套ListView)...

最近在项目中用ListView实现了一个树形菜单,菜单层级可以无限,数据动态填充,写这个控件确实是花了不少的时间,而且代码逻辑也比较复杂。所以在这里并不是把整个源码贴出来,因为太多了,逻辑也比较难懂,我怕自己讲不清楚,所以这里只是记录一下在此过程中遇到的某方面的问题。 因为在项目中的数据是动态填充的,即每个树节点都是从服务器端请求,然后解析获取的。那这样的话就有一个问题就是lis...

u010941017的专栏 607

ScrollView嵌套ListView问题:如何让ListView随着ScrollView一起滚动

如题,Android滚动控件有个规律:一个父滚动控件嵌套了一个子滚动控件,当手指在两个控件重叠部分滑动时,会优先触发子控件的滚动属性。那么如何只触发父控件的滚动属性而不触发子控件的滚动属性?很简单,只要让整个ListView在父布局中显示出来就好了。假设父布局是一个不会滚动的控件(如RelativeLayout),当ListView在父布局中完全显示时(限制是这个ListView高度小于屏幕高度)

CZH 3020

Android在scrollview嵌套ListView,切换界面时scrollview整体向下滑动

有时候我们在scrollview中会嵌套ListView,在嵌套ListViewListView上面还有一些控件)后,切换Activity时会发现整个 scrollview 被向下滑动直到ListView置顶了,而上面的控件无法显示时,我们可以这样做: 将图中的View放在顶部,最后在代码中这样做: view.setFocusable(true); view.setFocusableInTouchMode(true); view.requestFocus(); 通过setFocusable

沧海龙腾LV的博客 599

完美解决ScrollView嵌套ListView滑动冲突(有图有真相)

(转载请保留原文地址  csdn yang http://blog.csdn.net/lys701/article/details/8755373) 最近在android开发中,需要在ScrollView里面嵌套ListView嵌套之后发现滑动冲突。问google问度娘,得出的很多答案都是设置listView的高度,让所有的item都显示出来,我觉得这是一种很不好的解决办法。在试过了很多次之后

lys701的专栏 7795

ScrollView嵌套listview时只显示一行,无法滑动listview底部显示不全等问题

1.listview显示一行 在ScrollView嵌套ListView时,系统可能无法正确的计算ListView的大小,所以我们需要根据当前的ListView的列表项计算列表的尺寸。实现代码如下: public static void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的...

u013166619的博客 421

android 关于 ScrollView嵌套GridView,ListView 显示滑动问题

ScrollView GridView ListView 都有上下滑动的响应函数,所以嵌套在一起的话,里面那一层就监听不到滑动的响应。 如果不处理的话,GridView ListViewScrollView中只会显示一部分高度,这样看起来不是很郁闷? 在特殊的情况下,我们需要嵌套起来使用才能符合界面的设计. SO 在网上找了一些时间后,发现解决办法还是有的,一下是我个

Dream It Possible 6285

【Android界面实现】解决ScrollView嵌套ListviewListview嵌套Listview显示不完整滑动冲突的问题

在一个滑动控件或者是布局里面,添加另外一个可以滑动的控件,通常会造成一些莫名其妙的问题。今天主要介绍在工作中遇到的,在ScrollView布局中嵌套Listview显示不正常,Listview嵌套Listview滑动冲突的问题。 1.ScrollView布局中嵌套Listview显示不正常的解决方案 目前来说,解决这个问题有好几种解决方案,这里只介绍其中两种比较简单易行的其中两

hellohhj的专栏 2307

解决ScrollView嵌套ListView显示不完全滑动冲突的问题

在开发中我们往往会遇到这样奇葩的需求,让一个ScrollView嵌套ListView,那么我们就会遇到这样一个问题,就是listView 显示不完全滚动冲突的问题。下面就来解决一下这个问题 首先看一下布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_

snow_anderson的博客 2464

ScrollView嵌套ListView显示滑动冲突问题

private ScrollView sc;     private ListView lv;     private ArrayList list = new ArrayList();     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(saved

si978967739的博客 369

解决ScrollView嵌套ListviewListview嵌套Listview显示不完整滑动冲突的问题

 本文章出自http://blog.csdn.net/zhaokaiqiang1992,转载请说明! 在一个滑动控件或者是布局里面,添加另外一个可以滑动的控件,通常会造成一些莫名其妙的问题。今天主要介绍在工作中遇到的,在ScrollView布局中嵌套Listview显示不正常,Listview嵌套Listview滑动冲突的问题。 1.ScrollView布局中嵌套Li

rsgzs的专栏 334

解决ScrollView嵌套ListView滑动冲突显示不全的问题

RT、 要想解决这个问题,有2种解决方案: 1、固定ListView的高度(自己一点点的调试,适当地将高度设置高一点); 2、计算ListView的高度(其实也算是固定高度,只不过是通过代码进行了计算然后再固定)。 方法1就不用多说了,方法2我把代码放上来吧。 public class ListViewUtils{ public static void setHeight(Li

As的博客 890

ScrollView中若嵌套滑动的控件(如:WebView,ListView或GridView),另外该界面中还有其它的控件时,界面不显示最上面控件的问题

ScrollView中若嵌套滑动的控件(如:WebView,ListView或GridView),另外该界面中还有其它的控件时,此时若WebView,ListView或GridView的内容超过了整个屏幕的话,那么进入该界面的时界面不会显示最上面控件,而是WebView,ListView或GridView这些控件会往上移,解决这个问题的方法就是: scrollView.requestChild

Vincent20111024的专栏 1636
上一篇: Eclipse 项目导入Android Studio
下一篇: attr format取值类型
竹林紫光
博客等级 码龄10年 17粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值