1

我有以下布局(为了简洁起见,我删除了不同的属性):Android的 - 滚动不使用滚动条

<RelativeLayout> 
    <LinearLayout> 
     <android.support.v7.widget.Toolbar/> 
     <LinearLayout android:id="@+id/item1"/> 
     <LinearLayout android:id="@+id/item2"/> 
     <LinearLayout android:id="@+id/item3"/> 
     <ListView/> 
    </LinearLayout> 
    <android.support.design.widget.FloatingActionButton/> 
</RelativeLayout> 

我试图让这个整个页面是滚动的。此刻,只有ListView滚动。任何想法如何做?请注意,我无法使用ScrollView,因为我嵌入了一个ListView。此外,外部元素必须是RelativeLayout,因为我需要FloatingActionButton固定而不管滚动。

+1

我正在考虑的一个方向:addHeaderView(View),我可以在其中添加项目1,2.3。工具栏可以修复。 – checklist

回答

3

ScrollView内有ListView会导致很多麻烦。改为只留下ListView在布局

<RelativeLayout> 
    <LinearLayout> 
     <android.support.v7.widget.Toolbar/> 
     <ListView/> 
    </LinearLayout> 
    <android.support.design.widget.FloatingActionButton/> 
</RelativeLayout> 

并移动LinearLayouts到单独的文件(例如header.xml

<LinearLayout> 
    <LinearLayout android:id="@+id/item1"/> 
    <LinearLayout android:id="@+id/item2"/> 
    <LinearLayout android:id="@+id/item3"/> 
</LinearLayout> 

可以作为标头然后添加布局的ListView

ListView listView = (ListView) findViewById(R.id.list); 
View header = LayoutInflater.from(context).inflate(R.layout.header, listView, false); 
listView.addHeaderView(header); // call before you set adapter! 

现在整个视图都会滚动。如果您使用onItemClickListener,请不要忘记索引转移了listView.getHeaderViewsCount()

+1

完美!正是我所追求的,你给出了一个非常明确的例子!谢谢! – checklist

-1

我认为,只有这样才能使布局滚动是把所有的内容为ScrollView例如像这样:

<RelativeLayout> 
    <ScrollView android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <LinearLayout> 
      <android.support.v7.widget.Toolbar/> 
      <LinearLayout android:id="@+id/item1"/> 
      <LinearLayout android:id="@+id/item2"/> 
      <LinearLayout android:id="@+id/item3"/> 
      <ListView/> 
     </LinearLayout> 
     <android.support.design.widget.FloatingActionButton/> 
    </ScrollView> 
</RelativeLayout> 
+0

ListView不能位于ScrollView中。 – checklist

+0

如果您在代码中复制了setListViewHeightBasedOnChildren(lv)方法,那么您可以在scrollView的内部使用listView,并且可以展开listView。另一种可能的解决方案是简化您的布局,并将您想要滚动的布局也放在列表中,作为页眉或页脚 –

0

使用垂直滚动内垂直滚动总是凌乱而可能只是不工作,但你可以chchck LINK

你也可以使用listView.requestDisallowInterceptTouchEvent(false)