android listivew和scrollview 并存问题解决方式

本文讨论了在设计包含多个视图组件的界面时,如何解决小屏幕设备上内容显示不全的问题。提出了使用单个ListView替代ScrollView和LinearLayout的方法,并详细介绍了此方案在布局复杂性、分页处理和用户交互上的优势。同时,提供了处理点击事件和组合视图内按钮误触的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中,偶尔会遇到这样的一个问题,就是:

一个页面,上半部分的内容比较多(组合视图),下班部分是一个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,就说这么多了,如果大家有更好的见解,愿听详解。谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值