教你用android怎么开发类似excel的报表

     Excel是日常工作中人人都会用到的数据报表工具,它的方便快捷自然不用我们多说。

     现在来谈谈怎么用android来开发类似的报表。

     现在大多数用的都是 HorizontalScrollView + ScrollView + ListView的方式,这种方式确实简单方便,容易上手,我们来看下(这种上手快,简单的报表可以满足,但是复杂的报表,比如有连线,图形的就走不通了):

     1、ListView需要继承覆盖下其中一个方法 onMeasure:

public class NoscrollListView extends ListView {
    //...此处省略

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //maxSpec 表示最大高度,完全铺满父view,即ScrollView
        int maxSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, maxSpec);
    }
}

  如上面的注释所示,maxSpec的定义,就是让ListView与它的父View一样高。

   2、再来看下HorizontalScrollView 的定义:

/**
 * 实现两个HorizontalScrollView 同步滚动
 */
public class SyncHorizontalScrollView extends HorizontalScrollView {
    private View otherScroolView;
    //...

    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (otherScroolView != null) {
            otherScroolView.scrollTo(l, t);
        }
    }

    public void setScrollView(View view) {
        otherScroolView = view;
    }
}

    otherScroolView 就是随它同步滚动的HorizontalScrollView。在滚动监听方法onScrollChanged方法中,otherScroolView 会同步一直滚动同样的距离。

3、最后看下最终的layout文件与activity代码:

    layout文件示意图如下:

    

       a、头部与数据显示可以左右滚动,所以都是 SyncHorizontalScrollView,这两个ScrollView中的列必须要保持宽度对齐。

       b、左边固定栏与数据显示可以上下滚动,所以都是 NoscrollListView,同样这两个ListView的行要保持高度对齐。

       c、 数据显示用SyncHorizontalScrollView嵌套NoscrollListView,就可以了。

       d、左边固定栏与数据显示区是在同一个 ScrollView中,这个ScrollView可以保证这2个部分上下滚动一致,因为它们的高度与ScrollView的高度是同样大小的(注意看上面maxSpec的定义)

       这样一来,上下左右滚动时,都能保持同步一致了。        

       so easy!喜欢的朋友可以关注下我,谢谢啦~~

        

©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页