如何将可扩展的 ListView 放入 ScrollView
Posted
技术标签:
【中文标题】如何将可扩展的 ListView 放入 ScrollView【英文标题】:How to put expandable ListView inside a ScrollView 【发布时间】:2015-08-26 13:36:42 【问题描述】:我似乎无法在我的片段中滚动。我在 editText 和 textViews 中间有一个可扩展的列表视图,在可扩展的列表视图下方有一个 textView 和 editText。我无法向下滚动到底部的 textView 和 editText。我该如何格式化,这样我就可以一直向下滚动而无需触摸 listView?
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:fillViewport="true">
<LinearLayout
android:layout_
android:layout_
android:layout_below="@id/toolbar"
android:background="#FFFFFF"
android:orientation="vertical"
tools:context="edu.bradley.apawelczyk.trackapp.Add_Athlete_Fragment"
android:weightSum="1"
android:padding="20dp"
android:id="@+id/addAthleteLayout">
<TextView
android:layout_
android:layout_
android:text="Add New Athlete"
android:id="@+id/txtTitle"
android:gravity="center"
android:textColor="#000000"
android:textSize="30dp"/>
<TextView
android:layout_
android:layout_
android:id="@+id/txtName"
android:text="Name: "
android:textColor="#000000"
android:paddingBottom="10dp"/>
<EditText
android:layout_
android:layout_
android:id="@+id/editFirstName"
android:hint="First Name"
android:background="@drawable/edit_text_background"
android:textColorHint="#BBBBBB"
android:textColor="#000000"
android:paddingLeft="10dp" />
<EditText
android:layout_
android:layout_
android:id="@+id/editLastName"
android:hint="Last Name"
android:background="@drawable/edit_text_background"
android:textColorHint="#BBBBBB"
android:textColor="#000000"
android:paddingLeft="10dp"
android:layout_marginTop="10dp"/>
<TextView
android:layout_
android:layout_
android:id="@+id/txtAge"
android:text="Age: "
android:textColor="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
<EditText
android:layout_
android:layout_
android:id="@+id/editAge"
android:hint=""
android:background="@drawable/edit_text_background"
android:textColorHint="#BBBBBB"
android:textColor="#000000"
android:paddingLeft="10dp" />
<TextView
android:layout_
android:layout_
android:id="@+id/txtGrade"
android:text="Grade: "
android:textColor="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
<EditText
android:layout_
android:layout_
android:id="@+id/editGrade"
android:hint=""
android:background="@drawable/edit_text_background"
android:textColorHint="#BBBBBB"
android:textColor="#000000"
android:paddingLeft="10dp" />
<TextView
android:layout_
android:layout_
android:id="@+id/txtEvent"
android:text="Event: "
android:textColor="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
<ExpandableListView
android:layout_
android:layout_
android:id="@+id/eventsList"
android:choiceMode="singleChoice"
android:divider="#000000"
android:dividerHeight="2dp"
android:focusable="false">
</ExpandableListView>
<TextView
android:layout_
android:layout_
android:id="@+id/txtTier"
android:text="Tier: "
android:textColor="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
<EditText
android:layout_
android:layout_
android:id="@+id/editTier"
android:hint=""
android:background="@drawable/edit_text_background"
android:textColorHint="#BBBBBB"
android:textColor="#000000"
android:paddingLeft="10dp" />
【问题讨论】:
【参考方案1】:您尝试创建的布局不会以这种方式工作,ListView
并不意味着在ScrollView
中,因为触摸事件将被消耗。对于带有可滚动标题的ListView
,您必须使用addHeaderView()
方法添加那些(类似于页脚)。但是,仅使用 XML 无法做到这一点。
您的主要 XML 应该只包含 ExpandableListView
,然后我建议创建一个带有 LinearLayout
的 XML,其中包含您想要在 ListView
上方拥有的所有视图,另一个 XML 包含下面的视图。在您的代码中,只需膨胀这些 XML 并使用它们调用 addHeaderView()
和 addFooterView()
。此外,如果您使用onItemClickListener
,请注意标题视图将移动视图索引。
【讨论】:
【参考方案2】:可扩展列表视图/列表视图不接收手势,因为滚动视图处理它们。尝试更改布局。
【讨论】:
如何更改布局?以上是关于如何将可扩展的 ListView 放入 ScrollView的主要内容,如果未能解决你的问题,请参考以下文章
如何将可拖动的元素放入可排序的元素中,放置的项目不是原始元素而是自定义助手