如何在屏幕顶部修复布局
Posted
技术标签:
【中文标题】如何在屏幕顶部修复布局【英文标题】:How to fix a layout on top of screen 【发布时间】:2014-01-04 11:02:07 【问题描述】:我在滚动视图中有一个线性布局,我希望第三个元素贴在父元素的顶部并在其他元素向上滚动时保持可见,当它向下滚动时,它会返回到原来的位置。这种偶数怎么办?
<ScrollView>
<LinearLayout>
<View1 />
<View2 />
<View3 />
<View4 />
<View5 />
.
.
.
<Viewn />
<LinearLayout>
</ScrollView>
当滚动时,View3
碰到 ScrollView 的头部,我希望它固定在顶部,其他元素在它下面滚动。向下滚动时,它会返回到正确的位置。
我想要做的是在 ScrollView 之前定义一个“已消失”的视图,这样当视图到达头部时,我然后使视图可见,然后在向下滚动时再次使其消失。 我不知道如何实现。
【问题讨论】:
如果没有快照或 xml 文件,我们不能正确地说。为此发布一些内容。 使用<ScrollView>
<LinearLayout>
<View1 />
<View2 />
<View3 />
<View4 />
<View5 />
.
.
.
<Viewn />
<LinearLayout>
</ScrollView>
public class List1Adapter extends BaseAdapter implements AbsListView.OnScrollListener
private boolean isFix = false;
private Object mData[];
private int firstVisibleItem = 0;
public List1Adapter(Object data[])
this.mData = data;
@Override
public int getCount()
if(null != mData) return mData.length + 1;
@Override
public Object getItem(int position)
return mData[position];
@Override
public View getView(int position, View convertView, ViewGroup viewGroup)
Object dataItem;
if(isFix && firstVisibleItem >= topViewIndex && position == firstVisibleItem)
dataItem = getItem(topViewIndex);
if(null == convertView)
convertView = new View();
//render with your data.
void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
if(visibleItemCount > 0 && firstVisibleItem >= topViewIndex)
isFix = true;
else
isFix = false;
this.firstVisibleItem = firstVisibleItem;
你可以这样吗?
【讨论】:
但是顶部元素在某些时候是滚动视图的一部分,在这里它是固定的。你能看一下我的编辑吗? 你的意思是 view3 在向上滑动时必须始终位于顶部? 当它到达顶部时,它会停留在那里,其他人继续 我认为一切都是关于适配器的。你可以控制如何显示你的视图。所以你可以在你的适配器中做一些逻辑。希望可以帮助。我更新它。以上是关于如何在屏幕顶部修复布局的主要内容,如果未能解决你的问题,请参考以下文章