具有四个Listview的Android线性布局不在Scrollview内滚动

时间:2012-12-03 10:52:28

标签: android scrollview android-linearlayout

我正在使用LinearLayout垂直方向,在该布局中我有四个ListView。这个布局放在ScrollView内。

我的问题是ScrollView没有滚动。所以我无法看到我的所有列表视图。

我在做的是:

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView1"
android:layout_width="wrap_content"
android:layout_height="600dp"
android:fillViewport="true" >




             <LinearLayout
                 android:id="@+id/frag_capt2"
                 android:layout_width="800dp"
                 android:layout_height="match_parent"
                 android:layout_marginLeft="100dp"
                 android:layout_marginTop="20dp"
                 android:orientation="vertical" >

                 <TextView
                     android:id="@+id/linearlayoutteamtv1"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="Medium Text"
                     android:textAppearance="?android:attr/textAppearanceMedium"
                     android:textColor="#000000" />


                 <ListView
                     android:id="@+id/ListView01team"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:background="@drawable/pm_cool_listproject_background" >

                 </ListView>



                 <TextView
                     android:id="@+id/linearlayoutteamtv2"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:text="Medium Text"
                     android:textAppearance="?android:attr/textAppearanceMedium"
                     android:textColor="#000000" />



                 <ListView
                     android:id="@+id/ListView02team"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:background="@drawable/pm_cool_listproject_background" >

                 </ListView>

                  <TextView
                     android:id="@+id/linearlayoutteamtv3"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:text="Medium Text"
                     android:textAppearance="?android:attr/textAppearanceMedium"
                     android:textColor="#000000" />



                 <ListView
                     android:id="@+id/ListView03team"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:background="@drawable/pm_cool_listproject_background" >

                 </ListView>



                  <TextView
                     android:id="@+id/linearlayoutteamtv4"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:text="Medium Text"
                     android:textAppearance="?android:attr/textAppearanceMedium"
                     android:textColor="#000000" />



                 <ListView
                     android:id="@+id/ListView04team"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:background="@drawable/pm_cool_listproject_background" >

                 </ListView>


             </LinearLayout>
</ScrollView>

我不明白我的代码遗失了什么。

5 个答案:

答案 0 :(得分:1)

listview NOT 应位于任何滚动元素内,反之亦然。请看看谷歌开发者对此有何看法。请查看Video

答案 1 :(得分:1)

你可以设置所有四个listview height..like ...

 <ListView
            android:id="@+id/lst_tree_hazard"
            android:layout_width="fill_parent"
            android:layout_height="80dp"       ///set the height based on your listview content
            android:scrollbars="none" >
 </ListView>

答案 2 :(得分:0)

ScrollView您不需要ListView。我认为您可以轻松使用RelativeLayout并指定ListViews

的顺序

答案 3 :(得分:0)

通常,您不能将可滚动的东西放在其他可滚动的东西中,它们以相同的方向滚动,并且结果是可靠的。偶尔这会起作用(例如WebViews中的ViewPager),但这是例外,而不是常态。

或者:

ListView移出ScrollView

将ScrollView的所有其余内容移动到ListView中,无论是使用addHeaderView()还是MergeAdapter

等内容

答案 4 :(得分:0)

你不能这样做!但是,您可以解决问题,单个列表中的多种类型的列表项。单一类型列表项之间的差异:

  • 定义列表项类型,即。 (header, list1_type, list2_type,... main_header?, main_footer?),覆盖getViewTypeCount()
  • 覆盖getItemViewType(...)
    • is index_of_header -> 0
    • is index_of_type1 -> 1
    • is index_of_type2 -> 2
  • 更复杂getView(...)
    • 获取项目视图类型,提示:使用已制作的功能
    • 根据类型调度视图创建,不要忘记,convertView参数是当前项类型的视图,应该重用它,如果不是null!

您可以为合并适配器创建自己的抽象类,如另一个答案中所述。它基本上就是我上面解释的内容。有时你不能使用合并适配器,即。递归结构,但最好考虑使用ExpandableListView