我有一个ListView
,我需要将FastScroll
的可见性始终启用。问题是,当列表项目只有少数(比如只有2或3),并且很容易在屏幕上显示时,显然它们不能滚动。但FastScroll
仍然在屏幕上,即可见。当列表项目少于可滚动时,我该如何禁用或隐藏它。仅当列表数据足够滚动时才显示FastScroll
1
A
回答
1
您可以启用/通过setFastScrollEnabled(boolean)
方法编程方式禁用快速滚动功能。
所以只需检查您的列表有多少条目,并启用/禁用相应的快速滚动。
+0
但是我怎么能知道,我有足够的项目显示在屏幕上,无法滚动。因为设备的尺寸会改变设备的设备。 –
+0
快速滚动只应启用,如果你真的有很多项目。对于正常数量的项目(比如20或30左右),列表视图的正常滚动行为应该足够了。 – Ridcully
1
不要听@Ridcully。默认行为很少是最佳的,这并不难。以下方法要求您知道物品高度。这也有你的活动实现OnPreDrawListener。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = (ListView) findViewById(R.id.list);
itemViewHeight = getResources().getDimensionPixelSize(R.dimen.item_height);
adapter = new YourAdapterClass();
listview.setAdapter(adapter);
ViewTreeObserver vto = list.getViewTreeObserver();
if (vto != null && list.getMeasuredHeight() == 0) {
vto.addOnPreDrawListener(this);
} else if (list.getMeasuredHeight() != 0) {
listViewHeight = list.getMeasuredHeight();
}
}
public void setData(Object data) {
// Set your adapter data how ever you do.
adapter.setData(data);
handleFastScrollVisibility();
}
private void handleFastScrollVisibility() {
if (listViewHeight == 0 || list == null) return;
int itemCount = adapter.getCount();
int totalItemHeight = itemCount * itemViewHeight;
list.setFastScrollAlwaysVisible(totalItemHeight > listViewHeight);
}
@Override
public boolean onPreDraw() {
ViewTreeObserver vto = list.getViewTreeObserver();
if (vto != null) vto.removeOnPreDrawListener(this);
listViewHeight = list.getMeasuredHeight();
handleFastScrollVisibility();
return true;
}
基本上你不知道什么时候ListView的高度将准备好。这就是为什么添加预览图监听器的原因,它会在准备就绪时通知您。我不知道如何获取数据,但此方法假定您不知道您的ListView高度或数据是否会首先准备就绪。如何将数据添加到适配器将取决于您的适配器。
相关问题
- 1. 仅当在iOS中滚动时才显示导航栏
- 2. 仅当鼠标悬停时才显示滚动条
- 3. PHP:仅当数据库值等于X时才显示表单
- 4. 仅当数据存在时才显示Google图表
- 5. Rails - 仅当满足某些条件时才显示循环
- 6. 仅当用户滚动时才将数据拉入collectionView?
- 7. Django仅当条件匹配时才显示列表过滤器
- 8. 仅当选中复选框时才显示列表
- 9. 仅当活动未显示时才显示通知
- 10. 仅在滚动后显示JTable数据
- 11. 仅当用户在特定DIV上滚动时才显示chart.js动画
- 12. 仅当点击提交按钮时才显示数据?
- 13. 仅当某些用户登录时才显示某些数据
- 14. LaTeX:只有剩下足够的空间时才显示块
- 15. 仅当列不为空时才显示列
- 16. 仅在滚动浏览某些div时才显示元素
- 17. 仅当离子含量滚动= false时才显示离子载玻片
- 18. Silverlight:仅当内容溢出时才会显示滚动查看器?
- 19. 如何仅当滚动达到某个点时才使用jquery显示内容?
- 20. NSScrollView不显示滚动条甚至虽然含量足够大
- 21. 仅当有足够的空间时才显示div,如果没有,则隐藏它
- 22. 仅当数据库中尚未存在信息时才显示表单字段
- 23. 聚合物核心列表 - 仅显示足够的项目以填充视口
- 24. 仅当显示按钮B时才显示按钮-A
- 25. 仅当启用Javascript时才显示表格
- 26. 仅当用户将表格下拉时才显示搜索栏
- 27. 仅在滚动时显示元素
- 28. 仅当数据较少时才异步
- 29. 当我足够接近时显示通知
- 30. 只有当用户滚动时,才能显示div
在启用快速滚动的位置显示您的代码 –
M在我的listview.xml中启用fast_scroll –