在工作中遇到了一个难题,就是一个listView在最下面的一个item下面没有分割线,要求是必须得有这条分割线。经过一通研究发现了这个奇怪的现象:
1. ListActivity有这条底部分割线。
2.在Activity中只有listview,没有别的控件的话也会有。
其实ListActivity也是一个Activity,只不过在其中使用了SetContentView(listView)方法设置了一个listView作为其显示的View而已。所以结论就是只要这个activity调用了SetContentView(listView)就会有这条底部分割线。
那么什么情况下才不会有这条分割线呢?在Activity中如果调用setContentView(View)而ListView只是内嵌入到这个View的话有可能会没有这条分割线。
分析其原因:通过加断点调试发现在listView中,所有的分割线都是通过画一个很窄的矩形来实现的,但是在画分割线前都会都会判断目前的位置A和listView的长度B,如果A=B了,那么就不会画这条分割线了。但是将Listview嵌入到一个View中,一般会设置为高度为wrap_content,这种情况下,最后那条分割线的位置刚好等于listView的高度,所以系统不会画上这条分割线。那要怎么样才会画上呢?很简单,将ListView的高度设置为fill_partent就可以了。
当然以上所说的都是item很少的情况下,如果item很多以至于必须显示滚动条的话,那最后一个item下面是肯定不会有分割线了。
转自:http://blog.chinaunix.net/space.php?uid=20771867&do=blog&id=2915442
分享到:
相关推荐
此外,通过设置ListView的`setFooterDividersEnabled(false)`可以隐藏底部分隔线,提高性能。 7. **防止重复加载**: 需要防止用户在加载过程中多次触发加载事件。一种常见做法是在加载过程中禁用滚动监听器,或者...
以下是一个简单的示例,展示如何在Adapter中避免绘制底部分隔线: ```java @Override public View getView(int position, View convertView, ViewGroup parent) { View itemView = super.getView(position, ...
8. **ListView的分隔线(Divider)**:开发者可以自定义ListView的分隔线样式,通过设置`setDivider()`和`setDividerHeight()`方法。 9. **ListView的动画效果**:为了提升用户体验,可以添加一些动画效果,例如项...
默认ListView没有分隔线,可以设置`setDivider()`和`setDividerHeight()`添加分隔线,增加视觉效果。 9. **选择模式** 通过`setChoiceMode()`设置ListView的选中模式,如单选(CHOICE_MODE_SINGLE)、多选...
- `android:divider="@drawable/list_driver"` 用于设置ListView项之间的分隔线,可以指定一个图片资源。若要移除分隔线,设置为`android:divider="@null"`。 5. **fadingEdge属性**: - `android:fadingEdge=...
还可以通过`android:divider`和`android:dividerHeight`属性设置分隔线。 4. 设置Adapter:在Activity或Fragment中,通过ListView的`setAdapter()`方法将ArrayAdapter绑定到ListView上。 5. 事件监听:通过实现`...
在ListView中,每一项之间通常都会有一条分隔线来区分不同的列表项。有时候为了追求更简洁的视觉效果,可能希望去除这些分隔线。 可以通过调用`setDivider(null)`方法来实现这一点。需要注意的是,这是一个运行时的...
3. **分隔线**:通过setDivider()方法可以设置列表项之间的分隔线,setDividerHeight()来调整分隔线的高度。 4. **头尾视图**:通过addHeaderView()和addFooterView()方法,可以在ListView的头部和尾部添加固定不变...
- `android:footerDividersEnabled`和`android:headerDividersEnabled`:控制是否显示底部和顶部的分隔线。 3. **ListView的事件监听** - `.setOnItemClickListener(OnItemClickListener)`:设置点击列表项时触发...
3. **分隔线**:通过设置Divider和DividerHeight属性,可以在ListView项之间添加分隔线,提高视觉效果。 4. **选择模式**:ListView支持多种选择模式,如单选(CHOICE_MODE_SINGLE)和多选(CHOICE_MODE_MULTIPLE)...
- 设置合适的item分隔线,提高用户体验。 9. **下拉刷新和上拉加载**: - 若列表数据量大,可以集成SwipeRefreshLayout实现下拉刷新功能,使用LoadMoreView实现上拉加载更多好友。 10. **性能监控**: - 使用...
分隔线可以通过`setDivider()`和`setDividerHeight()`来设置,用于区分列表项,提供更好的视觉效果。 8. **Smooth Scrolling** ListView支持平滑滚动,通过`smoothScrollBy()`或`smoothScrollToPosition()`方法...
使用`setDivider()`和`setDividerHeight()`可以自定义列表项之间的分隔线,提升界面美观度。 以上技巧可以帮助你在Android应用开发中更好地利用ListView这一组件,提供流畅且高效的用户体验。在实际项目中,根据...
- **布局文件**:在XML布局文件中,我们通过`<ListView>`标签添加ListView,并可以设置其属性,如id、背景色、分隔线等。 - **数据源**:数据源可以是ArrayList、Array等,存储要显示的项目信息。 - **Adapter**...
- `getViewTypeCount()` 和 `getItemViewType(int position)` 方法用于处理不同类型的列表项,例如在列表中插入广告或分隔线。 5. **ListView的事件监听** - `.setOnItemClickListener()` 用于设置点击列表项时的...
7. **ListView的分隔线(Divider)** 使用`setDivider()`和`setDividerHeight()`方法可以设置列表项之间的分隔线样式和高度。 8. **下拉刷新和上拉加载更多** 为了实现类似功能,可以使用SwipeRefreshLayout包裹...
2. **去除顶部间隔**: 如果ListView上方有额外的间隙,可能是因为默认的Header造成的,可以通过设置`listView.setDivider(null)`和`listView.setDividerHeight(0)`去除分隔线和分隔线的高度。 3. **去除底部间隔**:...
- 分割线(`Divider`):通过 `setDivider()` 和 `setDividerHeight()` 设置列表项之间的分隔线。 - 头部和尾部(Header and Footer):`addHeaderView()` 和 `addFooterView()` 可以添加固定在顶部或底部的视图。...
ListView支持多种视图类型,例如头部、底部和分隔线,但添加这些需要自定义适配器。然而,ListView在处理大量数据和复杂的动画时性能表现会有所下降,因为它的滚动性能优化有限。 相比之下,RecyclerView自Android ...
- `Divider`和`DividerHeight`定义了列表项之间的分隔线及其高度。 3. **ListView滚动机制**: - `OnScrollListener`监听器可以捕捉到滑动开始、滑动进行和滑动结束的事件,这对于实现下拉刷新和上拉加载等功能至...