今天项目使用到ScrollView嵌套HorizontalScrollView,ScrollView里包括GridView,发现几个问题非常经典。在此记录:

问题1.ScrollView嵌套HorizontalScrollView跳变问题。ScrollView、HorizontalScrollView自己主动下拉到最后一行;

设置到初始坐标(0,0)解决方法:

(时机:数据解析完而且刷新notifyDataSetChanged()之后进行以下代码设置)

scrollview.smoothScrollTo(0, 0);

horizontalscrollview.fullScroll(ScrollView.FOCUS_LEFT);

注意:

这两行代码无法达到效果( scrollview.fullScroll(ScrollView.FOCUS_UP);horizontalscrollview.fullScroll(ScrollView.FOCUS_LEFT); )

问题2.ScrollView与GridView冲突,GridView无法显示全部数据和滑动。

方法1)GridView假设知道行数大小能够直接给定高度,可是一般数据都是不固定的。所以仅仅需在getView()进行简单的设置就可以解决这个问题:

Collections.sort(arraylist);//依据解析数据自己定义高度数据放在集合里并升序排列

LinearLayout.LayoutParams lp2 =(android.widget.LinearLayout.LayoutParams) gridview.getLayoutParams();

lp2.height=arraylist.get(arraylist.size()-1);//高度取升序集合里最大的高度即最后一位

gridview.setLayoutParams(lp2);

方法2)自己定义控件实现可滑动:

public class GridView4ScrollView extends GridView {

public GridView4ScrollView(Context context) {

super(context);

}

public GridView4ScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public GridView4ScrollView(Context context, AttributeSet attrs,

int defStyle) {

super(context, attrs, defStyle);

}

@Override//ScrollView嵌套GridView

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(

Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

other:其他控件測量getViewTreeObserver()

1
2
3
4
5
6
7
8
9
ViewTreeObserver
vto = imageView.getViewTreeObserver();  
vto.addOnGlobalLayoutListener(newOnGlobalLayoutListener()
{
     @Override  
     public
void

onGlobalLayout() {
         imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
         imageView.getHeight();
         imageView.getWidth();
       }   
 });

Android ScrollView嵌套HorizontalScrollView 滑动问题 ScrollView包括GridView显示问题的更多相关文章

  1. (转)ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 本篇主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌 ...

  2. android 项目学习随笔十七(ListView、GridView显示组图)

    ListView.GridView显示组图,处理机制相同 <?xml version="1.0" encoding="utf-8"?> <Li ...

  3. Android scrollview嵌套webview滑动冲突的解决方案

    在Android开发中有时我们需要在scrollview中嵌套webview这时你会发现这两者的滑动事件产生了冲突导致:webview很难被滑动,即使被滑动了一点也非常不顺畅.解决方案也比较简单只需要 ...

  4. Android ScrollView嵌套Recyclerview滑动卡顿,松手即停问题解决;

    假如你的布局类似这样的: <ScrollView android:layout_width="match_parent" android:layout_height=&quo ...

  5. Android中scrollview嵌套HorizontalScrollView卡顿现象解决

    开发中经验会遇到滑动里面嵌入滑动的问题,但是这种情况下触摸事件就会发生冲突.导致滑动非常卡,甚至出现程序停止响应.这种情况下我们一般需要重写view.下面给出重新scrollview的方法 publi ...

  6. 解决ScrollView嵌套viewpager滑动事件冲突问题

    重写ScrollView 第一种方案能解决viewpager的滑动问题,但是scrollView有时会滑不动 public class VerticalScrollView extends Scrol ...

  7. scrollview嵌套listview 滑动事件冲突的解决方法

    listView.setOnTouchListener(new View.OnTouchListener() {                            @Override       ...

  8. Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案

    为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view; import android.content.Context; ...

  9. Android ViewPager嵌套ViewPager滑动冲突处理方法

    dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发, 然后决定是自身消费当前事件还是继续往下分发给子控件处理.返回true表示不继续分发,事件没 ...

随机推荐

  1. Spark源码学习2

    转自:http://www.cnblogs.com/hseagle/p/3673123.html 在源码阅读时,需要重点把握以下两大主线. 静态view 即 RDD, transformation a ...

  2. Scala基础类型与操作

    Scala基本类型及操作.程序控制结构 Scala基本类型及操作.程序控制结构 (一)Scala语言优势 自身语言特点: 纯面向对象编程的语言 函数式编程语言 函数式编程语言语言应该支持以下特性: 高 ...

  3. jQuery 如何写插件 - 第一步

    这篇文章引自iteye,是老帖子了~~ 国外优秀的文也有,今天就看这位仁兄的吧,写的很到位啊,通俗易懂. jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相 ...

  4. <正向/反向>最大匹配算法(Java)

    算法描述(正向): 给定最大词长n,待分词文本str,指针f=0,词典dic文档 1 取子串sub=str(f,f+n) 2 如果(遍历dic,有匹配sub) f++; 3 否则 n--; 4 注意: ...

  5. Yii2.0中文开发向导——自定义日志文件写日志

    头部引入log类use yii\log\FileTarget; $time = microtime(true);$log = new FileTarget();$log->logFile = Y ...

  6. poj 3348 Cows 求凸包面积

    题目链接 大意: 求凸包的面积. #include <iostream> #include <vector> #include <cstdio> #include ...

  7. 配置Raspbian 启用SPI I2C

    sudo vi /etc/modprobe.d/raspi-blacklist.conf 找到这两行 blacklist spi-bcm2708 blacklist i2c-bcm2708 注释掉 # ...

  8. android-通知Notification

    发送通知 public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstan ...

  9. MySQL 表分区A

    在MySQL中表的分区类型总的来说有四种: 第一种:range分区.基于一个给定的区间范围,把数据分配到不同的分区. 第二种:list   分区.基本枚举的值列表进行分区. 第三种:hast 分区.基 ...

  10. android小知识之EditText输入框之值监控以及类型限制(数字,英语字母,下划线,是否为星号密码)

    1.设置EditText的值监听事件 . <span style="font-size:14px;color:#990000;"> EditText ed=new Ed ...