zoukankan      html  css  js  c++  java
  • Android ScrollView嵌套HorizontalScrollView 滑动问题 ScrollView包括GridView显示问题

    今天项目使用到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();
           }   
     });


  • 相关阅读:
    Centos7上安装docker
    centos如何查看某一目录下每个目录或文件占用磁盘空间大小
    大学毕设参考文献在什么网站搜索
    Spring MVC使用jstl 标签c:forEach 遍历输出双层嵌套List的数据
    JQuery选择器通过click事件获取当前点击对象的id,name,value属性
    利用ajax和servlet实现前后端数据交互(json)
    Java软件工程的弹幕调试原则
    周周总结——时时更新(第4学期,第8周)
    团队软件的NABCD——星遇
    周周总结——时时更新(第4学期,第7周)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5135628.html
Copyright © 2011-2022 走看看