以下是概念上的场景(不包括线性布局)
ScrollView
Button
Checkboxes
Spinner
ListView (full-size, non-scrolling)
AdMob advert即滚动窗格,它在顶部具有过滤UI,然后是结果,但广告必须始终保持可见,并且当向下滚动时,过滤器UI必须滚动离开,为结果留出最大空间。
我意识到ScrollView中的ListView存在问题,尽管对我来说,它在许多方面都工作得很好(我正在调整ListView的长度以防止它崩溃)。因此,屏幕滚动得很好,广告留在底部,看起来也不错。
但我看到的问题是,令人费解的是,当活动打开时,ScrollView会向下滚动一点,因此ListView位于屏幕顶部。我假设这是默认行为,所以我开始尝试强制ScrollView的滚动位置到顶部,但我尝试了各种方法,但没有看到任何效果:
scrollview.scrollTo(0, 1000/-1000);
scrollview.smoothScrollBy(0, 1000/-1000);
scrollview.fullScroll(View.FOCUS_UP);有没有办法强制ScrollView从顶部的滚动位置开始?
如果不是,我怎么能有一个不从底部滚动的广告,而是一个总是从顶部滚动的过滤器UI呢?使用ListView看起来有点夸张,因为我不需要滚动,但它确实提供了很多好处,所以最好避免从头开始并自己渲染所有内容。
发布于 2010-10-25 03:35:43
如果不滚动,为什么要使用列表视图?为什么你不能使用线性布局或者更适合这种情况的布局呢?你提到一个过滤器,你可以很容易地滚动你自己的过滤器,特别是因为显然你在你的列表视图中只有几个项目。
发布于 2011-08-24 19:08:11
使用以下方法,尽情享受吧!
private void setListViewScrollable(final ListView list) {
list.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
listViewTouchAction = event.getAction();
if (listViewTouchAction == MotionEvent.ACTION_MOVE)
{
list.scrollBy(0, 1);
}
return false;
}
});
list.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (listViewTouchAction == MotionEvent.ACTION_MOVE)
{
list.scrollBy(0, -1);
}
}
});
}listViewTouchAction是一个全局整数值。如果您可以替换这行
list.scrollBy(0, 1);如果你有其他的想法,请与我们分享。
发布于 2010-10-25 11:41:55
使用ListView之外的其他东西,您可以动态生成linearLayouts来显示您想要的数据。你不应该在scrollView中使用列表视图,它不能工作的原因很简单,当你滚动的时候,应该滚动什么,列表视图还是滚动视图。谷歌的几个人已经声明不会这么做。
https://stackoverflow.com/questions/4010005
复制相似问题