在开发中,偶尔会遇到这样的一个问题,就是:
一个页面,上半部分的内容比较多(组合视图),下班部分是一个listview ,甚至有时,最下面还有一些内容(组合视图),如下图:
像这类的界面,在设计上,是不推荐的,但是,有时候,客户就是这么要求的。。。那就没办法了。只能想办法实现了。
思路:
既然页面的上半部分的内容较多,下面还有列表,和其他视图。这样就会导致在小屏幕的手机上,下面的内容显示不出来。一般在内容较多的情况下,会在最外围加一个scrollview,但是,加了scrollview 以后,里面的listview 会显示不完整,而且想滚动listview 的时候,scrollview 也一起滚动,很影响用户操作。
那就不能用scroollview 来解决了,想想其他办法吧。
看了看网友的解决办法, 基本上有这么几种:
1.将里面的listview 替换为linearlayout ,照样在最外面使用 scrollview 来包住所有的视图。
2. 通过设置 listview 的高度来使 listview 显示全。最外部还是用 scrollview 来包围.
3. 就是 只使用一个 listview ,上面和下面的视图,用 addHeaderView () 和 addFooterView() 来添加。最外围,不用scrollview。
本人在这里,综合考虑了下,选择了 最后一种方法, 只使用 listview来实现。
用第三种方法,适合于:
1. 页面布局 :
1> 上面是组合视图,下面是listview
2> 上面是listview ,下面是 组合视图
3> 上面是组合视图,中间是listview ,最下面是组合视图
* 类似这几种布局的,用该方法比较合适,如果布局更加复杂,要么就考虑重新设计布局,要么就采用其他方式。
2. 好处:
1> 在listview 数据较多,需要分页处理时,之前用在listview 上面的分页方法可以原封不动搬过来,
2> 在用户上下拖动时,感觉比用 scrollview 拖动更加灵活;
* 但是,需要注意几个地方:
1. 如果listview 的点击事件,是自定义一个实现onitemclicklistener接口的类来控制的话,。
需要把上面和下面的view 的索引去掉,才是中间数据的 索引。
2. 如果上下的组合视图。里面有按钮需要点击,而且是加了,背景点击变化效果的。就要注意了,你如果点击整个headview, 会发现headview 里面所有的按钮都被点击了似的。
这种效果严重影响操作啊,需要处理一下。
1> 给整个组合视图加个背景图片,或者是颜色,(如果有,就别加了) 是为了防止 滚动listview 带来的背景突然变黑,和点击headview 后,采用的是系统自带的按下颜色。可能会影响界面。
2> 给整个组合视图,加个单击事件,事件里什么都不写,这是解决在用户单击整个headview 的时候,里面的按钮控件会一同被按下的问题。 (这种方法貌似不是个很好的方法,估计是有可以通过属性设置,来达到相同效果的,但是没有查询到,所以,就用这个方法了,如果网友有更好的方法,还忘赐教。)
OK,就说这么多了,如果大家有更好的见解,愿听详解。谢谢