如何在屏幕顶部修复布局

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 文件,我们不能正确地说。为此发布一些内容。 使用和子相对布局的属性android:layout_alignParentTop="true" 【参考方案1】:
<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 在向上滑动时必须始终位于顶部? 当它到达顶部时,它会停留在那里,其他人继续 我认为一切都是关于适配器的。你可以控制如何显示你的视图。所以你可以在你的适配器中做一些逻辑。希望可以帮助。我更新它。

以上是关于如何在屏幕顶部修复布局的主要内容,如果未能解决你的问题,请参考以下文章

如何使编辑文本浮动在工具栏和主布局的顶部

如何使视图修复屏幕IOS 8?

相对视图停留在布局顶部

如何修复线性布局中的 layout_weight?

如何以编程方式在顶部和底部的垂直线性布局中设置一个视图?

如何使用自动布局约束在单个屏幕中放置两个视图